我使用最新的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
答案 0 :(得分:0)
我遇到了同样的问题,并且能够通过自己分离出validates_uniqueness_of来绕过它。所以对我来说
validates :username, :presence, uniqueness: { case_sensitive: false }
会抛出相同的错误(未定义的方法'文本?')。而改为
validates_presence_of :username
validates_uniqueness_of :username, { case_sensitive: false }
工作正常。