![](/img/trans.png)
[英]Rails model common validations inherited from abstract base class but unique field validations occur on subclass
[英]Rails 3 Validations on Field from Related Model
我有一個User類,它有一個UserProfile類。 該電子郵件存儲在User表中,因為他們需要使用該表登錄,但是,我希望通過我的user_profiles#edit
方法來更新此電子郵件地址。
如何在電子郵件字段上進行驗證?
我的課看起來像這樣(顯然不對,但您明白了):
class UserProfile < ActiveRecord::Base
belongs_to :user
validates :first_name, :presence => true
validates :last_name, :presence => true
validates :email, :presence => true, :uniqueness => true, :email_format => true
def email=(email)
self.user.email = email
self.user.save
end
end
我的表單參數將類似於:
{
"user_profile" => { "first_name" => "John", "email" => "qwerty", ....
}
EmailValidator僅來自Railscasts:
class EmailFormatValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
object.errors[attribute] << (options[:message] || "is not formatted properly")
end
end
end
您可以將驗證放在用戶模型中。 當您在用戶模型上調用save時,將檢查這些驗證。
並且您需要將以下內容添加到關聯:
belongs_to :user, :validate => true, :autosave => true
並從email =方法中刪除保存調用,因為現在用戶已自動保存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.