簡體   English   中英

Rails 3相關模型的字段驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM