我正在使用Rails的accep_nested_attributes_for方法取得了巨大的成功,但是如何在不存在記錄的情況下創建新記錄呢?accpets_nested_attributes_for,HABTM和find_or_create
我發現這篇文章,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
在我的情況下 'def get_people' 'self.people.map! do | person |' 'Person.find_or_create_by_name(person。名)' 'end' 'end' 沒有工作,但 '高清get_people' 'self.people = self.people.collect做|人|'' Person.find_or_create_by_name(person.name) ' 'end' 'end' 確實! – Muntasim