I've run into this same issue and I've used something like
build(:car).attributes
Not sure if this is the best way to do it but it worked for me
Hope this helps
سؤال
There is the following factory:
factory :car do
name 'Some car'
engine_value 1.6
color '#ff0000'
car_type
engine_type
transmission
drive_type
material
end
As you see there are a lot of associated objects. But code
attributes_for(:car)
generates only :name=>"Some car", :engine_value=>1.6, :color=>"#ff0000"}
hash. I need to get a hash with all attributes. How can I do it? Thanks.
المحلول
I've run into this same issue and I've used something like
build(:car).attributes
Not sure if this is the best way to do it but it worked for me
Hope this helps
نصائح أخرى
You may want to omit the id
, created_at
and updated_at
attributes.
FactoryGirl.build(:car).attributes.except('id', 'created_at', 'updated_at')
If you need the keys to be symbols (as in the keys generated by attributes_for
):
FactoryGirl.build(:car).attributes.except('id', 'created_at', 'updated_at').symbolize_keys
Limitations:
create
, as in association :user, strategy: :create
. This strategy can make your factory very slow if you don't use it wisely.