Kev*_*son 4 boolean ruby-on-rails update-attributes
我有一个名为Discussion的简单模型,它有一个名为resolved的布尔列.
在我的表单中,我有以下代码
<%= form_for(@discussion) do |d| %>
...
<%= d.check_box :resolved %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有以下内容:
def update
@discussion = Discussion.find(params[:id])
if @discussion.update_attributes(params[:discussion])
etc...
end
end
Run Code Online (Sandbox Code Playgroud)
当我提交表单时,我可以看到参数被发送到服务器...
Parameters: {"utf8"=>"?", "authenticity_token"=>"AsGsRHwiVva/+kTrBs0IjLeZwj1ZmXBuKZr9Pg/N6Xk=", "discussion"=>{"shortdesc"=>"Talk about something.", "content"=>"Try to update check box.", "resolved"=>"1"}, "commit"=>"Update Discussion", "id"=>"1"}
Run Code Online (Sandbox Code Playgroud)
但该查询不包含有关更新该字段的任何内容.
AREL (14.9ms) UPDATE "discussions" SET "content" = 'Try to update check box.', "updated_at" = '2011-07-18 17:53:50.783176' WHERE "discussions"."id" = 1
Run Code Online (Sandbox Code Playgroud)
对我缺少什么有任何想法?
Sam*_*uel 18
有四个原因导致这种情况发生:
resolved 已在数据库中设置为true.resolved=在模型中定义了该方法,并且不再设置该属性.attr_protected :resolved.attr_accessible但没有:resolved在列表中.