How To:ユーザーがユーザー名または電子メールアドレスを使用してサインインできるようにし、そこで説明されているすべての手順を実行しましたが、registrations/new.html.erb
フォームから登録しようとすると、次のエラーが発生します。
Email can't be blank
私のモデルでは:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :username, :email, :password, :password_confirmation, :remember_me
attr_accessor :login
attr_accessible :login
と
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
if login = conditions.delete(:login)
where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
else
where(conditions).first
end
end
この問題に関するアドバイスはありますか?
=======更新
ここで何かを見つけました■[rails]DeviseとRailsの使用方法、ここに電子メールがない場合は、次のようになります。
# Email is not required
def email_required?
false
end
これをモデルに追加すると、ユーザー名を使用して電子メールフィールドを空白のままにしてレコードを作成できますが、電子メールを使用せずに2番目のレコードを作成しようとすると、データベースでエラーが発生します。
Mysql2::Error: Duplicate entry '' for key 'index_parents_on_email':...
これを使用して、データベースのテーブルからインデックスを削除username
し、モデルでを検証する必要がありますか?そのモデルではメールフィールドは本当に必要ないからです。