【发布时间】:2011-06-23 02:48:06
【问题描述】:
我正在使用 Rails 的 accept_nested_attributes_for 方法取得了巨大成功,但是如果记录已经存在,我怎么能让它不创建新记录呢?
我找到了这篇文章,accepts_nested_attributes_for with find_or_create?,但它似乎不适用于我的情况。
我在包和许可证之间有一个多对多的关系。表中应该只有一个许可证实例,例如:我不应该有两个名为“Awesome”的许可证
所需的功能是,当我创建一个包时,将许可证名称作为属性传递,如果该名称尚不存在,则创建一个新许可证,或者在现有许可证(使用提供的名称)和包裹。
这是我的模型的样子:
class Package < ActiveRecord::Base
has_and_belongs_to_many :licenses, :autosave => true
accepts_nested_attributes_for :licenses
end
class License < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :packages
validates :name, :presence => true
end
【问题讨论】:
标签: ruby-on-rails-3 validation activerecord has-and-belongs-to-many