Rails 3:Devise Gem +出错:唯一性验证

时间:2012-08-08 23:47:57

标签: ruby-on-rails-3 validation devise ruby-on-rails-3.2

我使用最新的Devise gem运行rails 3.2.5。我有一个与Actor类相关的用户类。如果我使用以下语法,有一个名为slug的字段可以正常验证...

validates :slug, :presence => true, :length => { :maximum => 50 }

但如果我放置额外的唯一性论点

validates :slug, :presence => true, :length => { :maximum => 50 }, :uniqueness => true

它会抛出错误......

NoMethodError in Devise::RegistrationsController#update

undefined method `text?' for nil:NilClass

我不确定导致这种情况的原因。

我还应该提一下,在我的用户模型类中,我有以下内容......

attr_accessible :name, :email, :password, :password_confirmation, :language, :remember_me, :profile_attributes, :admin, :slug

在我的配置文件中我有

config.active_record.whitelist_attributes = false #not standard nor recommended I know

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并且能够通过自己分离出validates_uniqueness_of来绕过它。所以对我来说

validates :username, :presence, uniqueness: { case_sensitive: false }

会抛出相同的错误(未定义的方法'文本?')。而改为

validates_presence_of :username
validates_uniqueness_of :username, { case_sensitive: false }

工作正常。