好吧,我在factories.rb
中有以下内容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吗?
答案 0 :(得分:1)
factory_girl中的别名用于防止两个属性相互冲突。典型的例子是关联与外键:如果你的工厂定义了一个“用户”关联,你通过传递“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