我想从库类中执行以下操作?
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
我知道我可以在User类中执行self.validates_presence_of:email,但我在库类中并且不确定如何执行此操作?
答案 0 :(得分: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
将填充任何验证错误。
答案 1 :(得分:0)
validates_presence_of是一个类方法,而不是实例方法。为了做你想做的事,你必须这样做:
user.class_eval {validates_presence_of :email }
但验证将在课程中设置,并且将为所有用户启用。