有以下工厂:
factory :car do
name 'Some car'
engine_value 1.6
color '#ff0000'
car_type
engine_type
transmission
drive_type
material
end
如您所见,有很多相关对象。但是代码
attributes_for(:car)
仅生成:name=>"Some car", :engine_value=>1.6, :color=>"#ff0000"}
哈希。我需要获得具有所有属性的哈希。我该怎么做?谢谢。
答案 0 :(得分:12)
我遇到了同样的问题而且我使用了像
这样的东西build(:car).attributes
不确定这是否是最好的方法,但它对我有用
希望这有帮助
答案 1 :(得分:0)
您可能希望省略id
,created_at
和updated_at
属性。
FactoryGirl.build(:car).attributes.except('id', 'created_at', 'updated_at')
如果您需要键作为符号(如attributes_for
生成的键中所示):
FactoryGirl.build(:car).attributes.except('id', 'created_at', 'updated_at').symbolize_keys
限制:
create
,与association :user, strategy: :create
中一样。如果您不明智地使用它,这种策略可能会使您的工厂变得非常慢。