我正在学习Factory Girl,我看到了这段代码:
factory :post do
association :author, factory: :user, last_name: "Writely"
end
为什么factory
和last_name
的结尾有冒号?
答案 0 :(得分:34)
此上下文中的冒号表示文字哈希。
factory
是Hash
键,:user
是值。
替代语法为:factory => :user
。他们的意思是一样的。
答案 1 :(得分:17)
Ruby 1.8语法:
:factory => :user
Ruby 1.9语法:
factory: :user
请注意,Ruby 1.8语法也适用于1.9。
答案 2 :(得分:0)
其他答案是正确的。关于这种新语法背后的基本原理有一些猜测。此更改可能与Javascript和其他语言如何处理对象文字表示法有关。或许,人们感到需要让红宝石更加符合这些语言处理对象创建的方式。
例如,在JavaScript中,我们可以这样做:
var person = {
name: "John",
age: 42,
married: false
}
所以,当我们传递factory: :user
时,我们真正要做的就是传递{factory: :user}
,也写为{:factory => :user}
。 1.9语法旨在简化{factory: "user"}