19

私は Devise を初めて使用しましたが、メール アドレスを認証キーとして使用することで問題なく動作しています。ただし、代わりにユーザー名が必要なユースケースがあり、それを機能させることができないようです。

ユーザーテーブルに文字列列「username」を追加し、サインインフォームのフィールドを :email から :username に変更し、devise.rb の認証キーを :username に変更しました。 「電子メール アドレスを入力してください」というメッセージが表示されます。

私は何を間違っていますか?

**new.html.erb**

  <div><%= f.label :username %><br />
  <%= f.email_field :username %></div>

**User.rb**
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:username]

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :username
  # attr_accessible :title, :body
end

**devise.rb**
 config.authentication_keys = [ :username ]
4

2 に答える 2

48

config/initializers/devise.rb でコメントconfig.authentication_keys = [ :email]を外して、config.authentication_keys = [ :username ]

更新:
フォームが正しくありません。に
変更f.email_fieldf.text_field

于 2012-06-02T23:28:17.990 に答える
2
  • まず、移行を必ず実行してください。

bundle exec rake db:migrate

  • Devise のビューを生成します。それ以外の場合、Devise はデフォルトを使用します。

rails generate devise:views

  • 必要に応じてデバイス/ビューを変更します (メール フィールドをユーザー名フィールドに置き換えます)。

  • ウェブサーバーを再起動します

それが役に立てば幸い!

于 2012-06-03T04:35:24.030 に答える