0
我有一個模型用戶具有通常的屬性電子郵件,email_confirmation,密碼,password_confirmation。我使用「has_secure_password」,因此數據庫中的真實屬性是email和password_digest。不過,我想限制密碼長度不超過6個字符的空格。如何使用Rails在模型中設置虛擬屬性?
這裏是我的模型:
class User < ActiveRecord::Base
before_validation :auto_strip_confirmation
validates :email, presence: true,
length: { maximum: MAX_SIZE_DEFAULT_INPUT_TEXT },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false },
confirmation: true
validates :email_confirmation, presence: true
has_secure_password
validates :password, length: { minimum: MIN_SIZE_USER_PASSWORD,
maximum: MAX_SIZE_USER_PASSWORD }
private
def auto_strip_confirmation
self.password.strip!
self.password_confirmation.strip!
end
end
但我得到這個控制檯:
> user.password = user.password_confirmation = "a "
=> "a "
> user.valid?
User Exists (0.8ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
=> true
感謝您的幫助。
我試過你的代碼,似乎工作正常,當我嘗試user.valid?時,我得到錯誤,你重新加載你的控制檯,並再次嘗試。 – suren
如果您自己解決它,請使用.gsub(/ \ s + /,「」)刪除字符串中的所有空格 – suren
,最好編寫自己的答案(並接受)。這樣,問題就不會公開。 – Roger