2012-11-07 54 views
0

我想從圖書館類做以下事情?我如何在rails中的實例上運行validates_presence_of?

class LibClass 
    def create_user(provider) 
    user = User.new 
    if provider == "facebook" 
     user.validates_presence_of :email 
    else 
     # dont validate presence of email 
    end 
    end 
end 

我知道我可以做一個self.validates_presence_of:用戶類的內部電子郵件,但我在圖書館類,我不知道如何做到這一點?

回答

1

在您的User模型中,您可以創建一個訪問器來打開或關閉驗證。

class User < ActiveRecord::Base 
    attr_accessor :validate_email 

    def validate_email?; validate_email == true; end 

    validates_presenece_of :email, :if => validate_email? 
end 

您可以通過設置user.validate_email = true打開驗證上:

def create_user(provider) 
    user = User.new 
    if provider == "facebook" 
    user.validate_email = true 
    else 
    user.validate_email = false 
    end 
end 

真正得到了驗證運行,你可以打電話user.valid?和散列user.errors將與任何驗證錯誤填充。

0

validates_presence_of是一個類方法,而不是一個實例方法。爲了做到你想要什麼,你就必須做到這一點:

user.class_eval {validates_presence_of :email } 

但確認將在類中設置,並且會在您的所有用戶。

相關問題