在我的模型(产品)中,我有一个验证,每个产品应该有一个有效的所有者(用户的login_id)
validates_presence_of :owner
validates_inclusion_of :owner, :in => User.first.login_id, :message => "%{value} is not a valid owner name"
我正在尝试使用工厂女孩
创建产品模拟对象用于创建新产品我需要用户的login_id。 这样做我创建了一个用户。
到目前为止,每件事情都可以,但是当我尝试使用该用户的login_id创建产品时 产品未创建,并显示验证消息(“User1不是有效的所有者名称”)。
深入挖掘后我发现了
我的问题是: 1.如何在初始化模型之前创建用户。
答案 0 :(得分:0)
您是否可以创建用户对象,然后将该对象传递给产品工厂?这应该创建一个有效的用户,然后通过所有者关联提供它并使产品有效。
user = Factory(:user, :name => "User1")
product = Factory(:product, :owner => user)
这个用户显然也必须是第一个用户?因此,如果您有现有的用户对象,则可以在创建第一个用户之前尝试清除所有用户。
User.delete_all
答案 1 :(得分:0)
我按如下方式解决了这个问题:
在我的模型中,我通过编写自定义验证方法替换了'Rails验证'。在创建“产品”时将调用此自定义验证方法。
validates_presence_of :owner
validate :owner_should_be_registered_user
def owner_should_be_registered_user
if !User.all_user.include? owner and !owner.nil?
errors.add(:owner, "is not a valid user")
end
end