有时候attributes_for
策略会返回不必要的属性,换句话说,如果我们需要一些属性,而不是返回所有属性,该怎么办:
FactoryGirl.define do
factory :user do
name { FFaker::Name.name }
nickname { FFaker::Name.suffix }
email { FFaker::Internet.email }
factory :special_user do
provider 'email'
confirmed_at Time.now.strftime('%F %T')
end
trait :confirmation do
current_password 'secret098'
password 'secret567'
end
trait :valid do
password_confirmation 'secret567'
end
trait :invalid do
password_confirmation 'secret568'
end
end
end
需要使用具有特征的工厂,但是只能返回current_password
,password
和password_confirmation
吗? attributes_for()
不适用于特征。或者也许有另一种方法可以做到这一点?
答案 0 :(得分:2)
attributes_for
会返回一个属性哈希,所以你可以从那个哈希中选择你想要的那些。
例如。
FactoryGirl.attributes_for(:user, :confirmation)
.slice(:current_password, :password_confirmation)