3

我正在使用 Devise gem 并拥有 2 个控制器:

1:控制器/管理员/mailings_controller.rb:

class Admin::MailingsController < ApplicationController
  def self.send_emails
    ...
    RegistrationsController.create
    ...
  end
end

2:控制器/registrations_controller.rb:

class RegistrationsController < Devise::RegistrationsController
  ...
  # POST
  def create
     # do some stuff
     super
     # do some stuff
  end
  ...
end

但是当我执行(在控制台中)...

Admin::MailingsController.send_emails

……我明白了……

"NoMethodError: undefined method `create' for RegistrationsController:Class"

为什么?以及如何解决这个问题?

rake routes

...显示没有问题:

user_registration POST  ->  /users(.:format)  ->  registrations#create
4

1 回答 1

1

更改RegistrationsController.createRegistrationsController.new.create

或者

更改def createdef self.create.

您在这里遇到的困惑是使用类方法,您的意思是调用实例方法。您可以通过调用实例上的方法或将方法更改为类方法来解决此问题。

于 2012-10-16T17:35:25.123 回答