我正在关注这个操作方法如何:允许用户使用用户名或电子邮件地址登录 https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address并完成了那里详细说明的所有步骤,但是当我尝试通过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
and
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 http://d.hatena.ne.jp/ancou/20110811/p1这里是这样的:
# Email is not required
def email_required?
false
end
在我的模型中添加该记录后,我可以创建一条包含用户名的记录并将电子邮件字段留空,但是当我尝试创建第二条没有电子邮件的记录时,数据库会出现错误:
Mysql2::Error: Duplicate entry '' for key 'index_parents_on_email':...
我应该使用它,从数据库中的表中删除索引,然后验证username
在模型中?因为我真的不需要该模型上的电子邮件字段。