When using “attributes=” for an object with a
accepts_nested_attributes_for
a model
that has a has_many relationship will cause the has_many array to be
appended-to
instead of being replaced as would be expected by a straight assignment
operation.
See this example:
class Member < ActiveRecord::Base
has_many :posts
accepts_nested_attributes_for :posts
end
class Post < ActiveRecord::Base
belongs_to :member
end
On Tuesday, February 26, 2013 7:35:23 PM UTC, xop wrote:
When using “attributes=” for an object with a accepts_nested_attributes_for a
model
that has a has_many relationship will cause the has_many array to be appended-to
instead of being replaced as would be expected by a straight assignment
operation.
attributes= has always behaved like that ( the name is bad - it’s not
really an accessor at all. The newer name is assign_attributes)
On Tuesday, 26 February 2013 14:35:23 UTC-5, xop wrote:
class Member < ActiveRecord::Base
m.attributes = p
m.posts.size ----> 2
m.attributes = p
m.posts.size ----> 4
Is this a feature or a bug? If it is a feature, how is it supposed to be
used?
With nested attributes, you’ll wind up creating new records unless the
entries in :posts_attributes have an :id key which indicates they’re
existing records to be updated.
–Matt J.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.