I'm learning about Factory Girl and I saw this code:
factory :post do
association :author, factory: :user, last_name: "Writely"
end
why do factory
and last_name
have a colon at their end?
I'm learning about Factory Girl and I saw this code:
factory :post do
association :author, factory: :user, last_name: "Writely"
end
why do factory
and last_name
have a colon at their end?
The other answers are right. There was some speculation regarding the rationale behind this new syntax. This change may have something to do with how Javascript and perhaps other languages handle object literal notation. A need was felt, perhaps, to bring ruby more in-line with how these languages handle object creation.
For example, in JavaScript, we can do:
So really, when we're passing
factory: :user
, what we're really doing is passing{factory: :user}
, also written as{:factory => :user}
. The 1.9 syntax is intended to make it easier to do something like{factory: "user"}
Ruby 1.8 syntax:
Ruby 1.9 syntax:
Note that the Ruby 1.8 syntax works in 1.9 also.
The colon in this context denotes a literal Hash.
factory
is theHash
key,:user
is the value.The alternative syntax is
:factory => :user
. They mean the same thing.