FactoryGirl:省略属性而不创建其他工厂

时间:2016-02-06 13:21:50

标签: ruby-on-rails ruby factory-bot

有时候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_passwordpasswordpassword_confirmation吗? attributes_for()不适用于特征。或者也许有另一种方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

attributes_for会返回一个属性哈希,所以你可以从那个哈希中选择你想要的那些。

例如。

FactoryGirl.attributes_for(:user, :confirmation)
  .slice(:current_password, :password_confirmation)
相关问题