Rails 4 - 控制器编辑操作返回错误的记录

时间:2013-09-17 20:46:06

标签: activerecord ruby-on-rails-4

我有一个属于User和Story的Comment模型。创建与相应的用户和故事正确关联的评论工作正常,但在尝试编辑评论时,我的编辑操作似乎检索到错误的记录。

comments_controller.rb中的违规行为:

def edit
  @story = Story.find_by(params[:story_id])
  @comment = @story.comments.find_by(params[:id])
end

用于呈现评论/编辑视图的链接:

<%= link_to 'edit', edit_story_comment_path(comment.story_id, comment.id) %>

相应的观点:

<%= form_for(@comment, url: { controller: 'comments', action: 'update' }) do |f| %> 
  <%= f.text_area :content %>
  <%= f.submit "update" %>
<% end %>

无论我尝试编辑哪个@comment,编辑视图似乎都会呈现最近添加的评论。

1 个答案:

答案 0 :(得分:0)

您正在使用find_by,这基本上是一种神奇的find_by_X方法,没有指定字段。 find_by(1)使用Postgres为我生成无效的SQL,但可能是您使用的任何数据库后端都接受它。

无论如何,find_by肯定不会做你想做的事。

如果您想通过find查找记录,则应该使用id

@story = Story.find(params[:story_id])