我有一個用戶模型,看起來像:Rails - 如何有條件啓用驗證?
class User < TwitterAuth::GenericUser
acts_as_authentic {|c|
c.login_field = :email
c.validate_email_field = false
c.validate_password_field = false
}
end
它採用TwitterAuth和Authlogic插件。
我想根據用戶是否使用twitter通過普通電子郵件註冊來選擇性地禁用驗證c.validate_email_field = false 。
- With email and password registration, the validations needs to be on.
-twitter does not have email or password fields, the validation needs to be off.
When I disable validation, the authLogic user registration using email and password fails:
unknown attribute: password_confirmation
I tried to selectively disable validation if attribute 'twitter_id' is present.
c.merge_validates_confirmation_of_password_field_options({:unless => :skip_password_validation?})
def skip_password_validation
!attribute_present?('twitter_id')
end
這不起作用,因爲表格中存在的屬性'twitter_id'無論是否使用。
如何有選擇地啓用電子郵件和密碼驗證? i,e僅在未使用twitter oAuth時啓用驗證。
感謝您的幫助
看起來像validates_with只是Rails 3.0。不幸的是我在2.3.5上,這似乎不是一種選擇。 – truthSeekr 2011-06-10 19:07:47
是的,你是對的。在2.3.x中,我想你必須直接覆蓋'validate'方法。看看'ActiveRecord :: Validations'的例子。祝你好運! – harald 2011-06-11 15:09:56