ruby on rails - Creating a Parent object whose HABTM accepts_nested_attributes_for children is ignoring the association(children) attributes update -
my activerecord models:
class parent < ar has_and_belongs_to_many :children accepts_nested_attributes_for :children, reject_if: :all_blank, allow_destroy: true end class child < ar has_and_belongs_to_many :parents end the controller parent creating. [edited]
def new current_child = current_user.set_child #first or initialize @parent = current_user.parents.build @parent.child_ids = [current_child.id].compact @children = [current_child] end def create @parent = current_user.parents.build(parent_params) if @parent.save ... else @children = @parent.children render :new end end [/edited]
def parent_params params.require(:parent).merge( child_ids: params[:parent][:children_attributes].map{|p,v| v[:id]} ). permit(:id, :picture, :remove_picture, child_ids: [], children_attributes: [ :id, :user_id, :full_name, :_destroy ] ) end [edited]
the simple form parent:
= f.simple_fields_for :children, @children |child| = render 'child_fields', f: child child fields file:
= f.hidden_field :id, value: f.object.id = f.hidden_field :user_id, value: f.object.user_id ... [/edited]
the point when parent saved, children_parents join table update (nice), children table has no id children inserted (nice), but if children has id (persisted), children table not perform update on them
debugging prev line before @parent.save, possible ensure @parent.children contains children new attributes. executed command @parent.save, children attributes aren't updating , if save called again, performs children update.
what happening?
Comments
Post a Comment