为什么会出现此错误?我没有想法。
undefined method `update_attributes' for #
代码:
exists = Vote.where(comment_id: @comment.id).exists?
if exists
update_vote = Vote.where(comment_id: @comment.id)
update_vote.update_attributes(value: 5)
redirect_to :back
else
答案 0 :(得分:7)
您想要特别提取一条记录,请告诉它:
update_vote = Vote.where(comment_id: @comment.id).first
但是如果没有匹配的话,这段代码容易出错,请注意。
答案 1 :(得分:0)
尝试使用find_by
代替where
。它将返回一个文档而不是Mongoid::Criteria
,这就是您收到该错误的原因(您尝试在一组记录上运行.update_attributes
,它作用于单个记录)。请考虑以下内容。
if update_vote = Vote.find_by(comment_id: @comment.id)
update_vote.update_attributes(value: 5)
redirect_to :back
else
以上代码还可以避免对.exists?
进行不必要的调用,因为存在检查与定义一致(如果.find_by
找不到任何匹配的记录,则返回nil
,就像.where(...).first
也会这样做。)