我这里有两个模特,一个主人和一个笔记。在底部的所有者表单中,我有一个用于存储注释的文本区域的嵌套表单。 它适用于new,但在编辑时如果没有音符则不会保存音符和current_user之间的关系。它会保存注释,但不会保存记录注释的user_id。
这是我的控制器的样子
感谢您提前提供任何帮助,或至少在寻找:)
owner.rb
class Owner < ActiveRecord::Base
accepts_nested_attributes_for :notes, :reject_if => lambda { |a| a[:note_text].blank? }
end
owners_controller.rb
def edit
@owner = Owner.find(params[:id])
unless @owner.notes.present?
@owner.notes.build
end
end
def update
@owner = Owner.find(params[:id])
@owner.notes.each do |n|
if n.created_by_id == nil
n.created_by_id = current_user
else
n.updated_by_id = current_user
end
end
respond_to do |f|
if @owner.update_attributes(params[:owner])
f.html { redirect_to @owner, notice: 'Owner successfully updated.' }
f.json { head :ok }
else
f.html { render action: "edit" }
f.json { render json: @owner.errors, status: :unprocessable_entity }
end
end
哦,我的note.rb模型
class Note < ActiveRecord::Base
belongs_to :pet
belongs_to :owner
belongs_to :created_by, :class_name => "User", :foreign_key => "created_by_id"
belongs_to :updated_by, :class_name => "User", :foreign_key => "updated_by_id"
答案 0 :(得分:0)
@owner.update_attributes(params[:owner])
是更新方法中存在注释的地方,但是在之后执行@owner.notes.each
当然,代码块会重新锁定当前用户不会跑。