[解決済み】デバイス登録コントローラを上書きする。
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"}
関連
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] Rubyのクラスで未初期化の定数エラーが発生する
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] Railsコントローラからホスト名を取得する
-
[解決済み] bundle install --without production は何をするのですか?
-
[解決済み] rails/rubyでgroup_byを使用する。
-
[解決済み] 属性とカラムの違いは何ですか?
-
[解決済み] サインアップするためのDeviseルートを削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] railsでcheck_boxをcheckedにする方法は?