我需要帮助解决错误。我已经研究了一段时间了,似乎无法弄清楚如何解决这个问题。在此先感谢您的任何帮助。目标是在我的审稿人表中更新字段“行业”。
错误:
NoMethodError (undefined method `find' for #<Reviewer:0x007fee8dbb3f40>)
我设置控制器的reviewers_controller
中包含此错误的代码:
def set_reviewer
@reviewer = current_user.reviewer.find(params[:id])
end
以下是更新方法:
def update
if @reviewer.update(reviewer_params)
render json: @reviewer
else
render json: @reviewer.errors, status: :unprocessable_entity
end
end
以下是我的模特:
class Review < ApplicationRecord
belongs_to :reviewer
end
class User < ApplicationRecord
include Authentication
has_one :reviewer
has_many :reviews, through: :reviewer
end
class Reviewer < ApplicationRecord
belongs_to :user
end
在set_reviewer
我尝试了.find_by
,但这不起作用。我已经阅读了has_one
宏和.find()
上的文档,但我只是在转动我的轮子。任何帮助是极大的赞赏。非常感谢你!
答案 0 :(得分:1)
您可以通过以下方式设置审阅者:
@reviewer = current_user.reviewer
current_user.reviewer
将返回关联的审阅者对象。您收到此错误是因为您尝试在审阅者对象本身上调用find。