在控制器中调用模型自定义方法

Calling model custom method in controller

我试图在我的控制器中调用我在模型中创建的自定义方法,但是当我提交指向控制器操作的表单时,出现以下错误:

undefined method `add_manager' for #Rally:0x4c1fa90

def add_manager
    if @rally.add_manager(manager_params)
      format.html { redirect_to @rally, notice: 'Manager successfully added.' }
      format.json { head :no_content }
    else

这是我的代码

rally.rb

def self.add_manager(params)
    user = User.where(:email => params[:email])
    rally.users << user
end

rallies_controller.rb

  def add_manager
    if @rally.add_manager(manager_params)
      format.html { redirect_to @rally, notice: 'Manager successfully added.' }
      format.json { head :no_content }
    else
      format.html { render action: 'edit' }
      format.json { render json: @rally.errors, status: :unprocessable_entity }
    end
  end

到目前为止我已经完成的测试:

知道我做错了什么吗?

更改class方法:

def self.add_manager(params)

到实例方法:

def add_manager(params)

因为@rally 是您的 Rally 的一个实例 class

(在上面的评论中回答 - 从未回答的列表中删除)