accepts_nested_attributes_for.

Example:

accepts_nested_attributes_for :tags, :allow_destroy => :true,
   :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }

:reject_if prevents saving new tags that do not have any attributes filled in.
But if in Tag model I use validates contraints it's the same thing?
So I can avoid :reject_if.

Example:

accepts_nested_attributes_for :tags, :allow_destroy => :true,
:reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }

:reject_if prevents saving new tags that do not have any attributes filled in.
But if in Tag model I use validates contraints it's the same thing?
So I can avoid :reject_if.

reject_if allows you to say, in the parent model, not to even try
saving the nested objects under some conditions. Validations in the
nested model class will make the save fail, so there is a subtle
difference.

Colin