我正在使用Devise gem并拥有2个控制器:
1:controllers / admin / mailings_controller.rb:
class Admin::MailingsController < ApplicationController
def self.send_emails
...
RegistrationsController.create
...
end
end
2:controllers / 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
答案 0 :(得分:1)
将RegistrationsController.create
更改为RegistrationsController.new.create
OR
将def create
更改为def self.create
。
您在这里遇到的困惑是使用类方法来调用实例方法。您可以通过在实例上调用方法或将方法更改为类方法来解决此问题。