2011-08-26 70 views
1

嗯,我已经中factories.rb以下哪一个是用FactoryGirl别名属性的正确方法?

Factory.alias /(.*_)confirmation/, "\1" 

Factory.define :user do |f| 
    f.new_pass 'asdasdasd' 
    f.new_pass_confirmation 'asdasdasd' 
end 

,然后当我创造我做了以下用户:

Factory.build(:user, :new_pass => 'something', :new_pass_ => 'something_else') 

但它抛出我的一个错误:

undefined method `new_pass_=` for #<User:0x1234567> 

不应该FactoryGirl转换new_pass_到new_pass_confirmation?

回答

1

factory_girl中的别名用于防止两个属性相互冲突。典型的例子是关联vs外键:如果你的工厂定义了“用户”关联,并且你通过传递“user_id”来覆盖它,那么“user_id”应该优先。

如果你想要的密码,确认密码覆盖,你会使用这个别名:

Factory.alias /(.*)_confirmation/, "\1" 

这听起来像你想要的密码确认默认密码,你可以这样做:

Factory.define :user do |f| 
    f.new_pass 'asdasdasd' 
    f.new_pass_confirmation { |u| u.new_pass } 
end 

在新的语法,你可以离开了块参数:

FactoryGirl.define do 
    factory :user do 
    new_pass 'asdasdasd' 
    new_pass_confirmation { new_pass } 
    end 
end 
相关问题