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.createに変更RegistrationsController.new.create

また

に変更def createdef self.createます。

ここでの混乱は、インスタンスメソッドを呼び出すことを意味するクラスメソッドを使用していることです。これは、インスタンスでメソッドを呼び出すか、メソッドをクラスメソッドに変更することで解決できます。

于 2012-10-16T17:35:25.123 に答える