admin_users があり、通常のユーザーがいて、両方とも別々のテーブル、モデル、およびデバイス ログインを持っています。
1 つのユーザー テーブルに対してのみ devise を使用し、ロールに対して cancan を使用する方が理にかなっているかもしれませんが、アプリケーションは既に 2 つの個別のユーザー テーブルで作成されており、この時点でそれらを変更するオプションはありません。
ログインを含む管理者ユーザーの機能は正常に動作しています。当初、標準ユーザー アクセスはリンクとトークン ベースの認証のみでしたが、これを変更する必要があります。
私たちが持っていたルートで
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
resources :users, :only => [:update, :edit]
そのため、ログインが成功した場所として、Devise のドキュメントで示されているユーザー リソースのルート パスを追加しました。
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
resources :users, :only => [:update, :edit] do
root to: "practitioner_activities#welcome"
end
そして、私もonly =>
例を削除しようとしました
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
resources :users do
root to: "practitioner_activities#welcome"
end
私が変更した(通常の)ユーザーモデルの場合:
devise :token_authenticatable,
また持っている:
devise :token_authenticatable, # token login still permitted.
:database_authenticatable, :recoverable, :rememberable,
:trackable, :validatable
# Not sure if these will make a difference but they are like this in other apps.
ただし、practicator_activities#welcome にリダイレクトする代わりに、ユーザーはログイン画面に戻されます。
ログイン POST についてログに記録されたコンソールの最初の行は、User モデルではなく、AdminUser モデルを使用していることに気付きました。修正方法はありますか?
Started POST "/" for 127.0.0.1 at 2012-08-23 13:54:50 -0400
Processing by HelpController#show as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"28iGxAB+URoIKoBQtPizGAosJoZ/V7Vko1w/bYMvesE=", "new_user_session_path"=>{"email"=>"Borger.Cathy@meridianschools.o
rg", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign In"}
AdminUser Load (0.4ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = 1 LIMIT 1
ログインフォーム自体は次のとおりです。
= semantic_form_for(:new_user_session_path,
:html => {:id => "session_new"}) do|f|
= f.inputs do
= f.input :email, :label => "Username"
= f.input :password
= f.input :remember_me, :as => :boolean, :if => false
= f.commit_button "Sign In"