1. ホーム
  2. ruby-on-rails

[解決済み】デバイス登録コントローラを上書きする。

2022-04-03 17:07:34

質問

サインアップフォームに、別のモデルをベースにしたフィールドを追加しました。 deviseモデルでネストされた属性を使用するにはどうすればよいですか? をご覧ください。この部分は問題なく動作しています。

問題は、保存する際に、devise が提供する登録コントローラの create アクションで失敗していることです。 Activerecord::UnknownAttributeError をこのフィールド(company)に追加してください。

私は、registrationsコントローラをオーバーライドする必要があると仮定していますが、より良い、より簡単な方法があるのでしょうか?

どのように解決するのですか?

フォームの中で、ユーザーモデルやネストしたモデルに属さない他の属性を、一括代入で渡していませんか?

その場合、ActiveRecord::UnknownAttributeErrorがこの例で発生するのだと思います。

そうでなければ、このようなものを生成して、独自のコントローラを作ればいいと思います。

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
    # add custom create logic here
  end

  def update
    super
  end
end 

そして、deviseにデフォルトのwithの代わりにそのコントローラを使用するように指示します。

# app/config/routes.rb
devise_for :users, :controllers => {:registrations => "registrations"}