私はRailsのaccepts_nested_attributes_forメソッドを使って大成功を収めていますが、レコードがすでに存在する場合、どうすれば新しいレコードを作成できますか?accpets_nested_attributes_for、HABTM、find_or_create
私はこの記事を見つけましたが、accepts_nested_attributes_for with find_or_create?ですが、私の場合はうまくいかないようです。
私はパッケージとライセンスの間に多対多の関係があります。テーブルにライセンスのインスタンスが1つだけ存在する必要があります。例えば、「素晴らしい」という2つのライセンスを持つべきではありません。
希望の機能は、ライセンス名を名前がまだ存在しない場合は新しいライセンスを作成するか、既存のライセンス(提供された名前)とパッケージの間に関連付けを作成します。 「名前」は本当にそれがまだ存在していなかった場合は、それを作成するために使用されるライセンスの唯一の属性である場合
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(人。名) ' ' end' 'end' は働いたが ' defの をget_people' 'self.people = self.people.collect DOされていません|人|' ' Person.find_or_create_by_name(person.name) ' ' end' 'end' です! – Muntasim