需要帮助解决NoMethod错误

时间:2017-04-30 01:10:50

标签: ruby-on-rails has-one

我需要帮助解决错误。我已经研究了一段时间了,似乎无法弄清楚如何解决这个问题。在此先感谢您的任何帮助。目标是在我的审稿人表中更新字段“行业”。

错误:

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()上的文档,但我只是在转动我的轮子。任何帮助是极大的赞赏。非常感谢你!

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式设置审阅者:

@reviewer = current_user.reviewer

current_user.reviewer将返回关联的审阅者对象。您收到此错误是因为您尝试在审阅者对象本身上调用find。