モデルでhas_many
リレーションシップが宣言されると、アクセサー メソッドが動的に追加され、id の配列を渡すことができます。
class Example < ActiveRecord::Base
has_many :foos
end
これにより、次のことが可能になります。
$ m = Example.create!
$ m.foo_ids = [1, 2, 3]
ただし、has_one
関係が宣言されると、そのようなアクセサーが作成されます。
class Example < ActiveRecord::Base
has_one :foo
end
許可しないもの:
$ m = Example.create!
$ m.foo_id = 1 # No method error
なぜこの不一致があるのですか?
ID を使用してフォームから複数の関連付けを設定できるのに、単一の関連付けを設定するには、ネストされたフォームが必要でありaccepts_nested_attributes_for
、モデルで を定義する必要があるのはなぜですか? これは API の不一致のように感じます。