7

DeviseinRailsの登録コントローラーをカスタマイズしたいと思います。次のようなコントローラーを作成する必要があることを理解しています。

class AccountsController < Devise::SessionsController
  def create
    super
  end
end

まあ、それはすべてとても良いです。#createしかし、それでは、自分の行動で何が起こるかを完全に制御したいとしましょう。それ、どうやったら出来るの?モデルを手動で作成し、すべてのパラメーターを渡すにはどうすればよいですか?Account.create(params [:account])はそれをスムーズに処理しますか?知っておくべき内部的なことが起こっている#superのでしょうか、それともアクション内で呼び出す唯一のオプションですか?

4

2 に答える 2

5

必要なフィールドを満たしている限り、例でAccount.createを呼び出すことができます。デフォルトのデバイスの必須フィールドは、login、password、およびpassword_confirmationであると確信しています。

これは、デバイスユーザーを作成するためのCRUD画面で行います。

@admin = Admin.new(params[:admin])
if @admin.save
  redirect_to admin_admins_path, :notice => 'New Administrator has been added'
else
  render :action => "new"
end

Deviseセッションコントローラーを拡張したくない場合は、ApplicationControllerを拡張する通常のコントローラーで問題ありません。または、Devise :: RegistrationsControllerを拡張して、registrations_controller.rbファイルで微調整するメソッドを上書きすることもできます。

于 2011-01-11T08:04:50.770 に答える
1

物事を適切にオーバーライドしていることを確認し、処理を見逃していないことを確認したい場合は、Githubのソースを確認することもできます...

https://github.com/plataformatec/devise/tree/master/app/controllers

于 2011-08-21T04:12:08.770 に答える