0

Factory Girl 允许执行以下操作:

FactoryGirl define 
  factory :post do
    content  "some content"
    styles   "styles here"
    team     1
  end
end

但是,如果我在工厂块内尝试一些东西,例如:

  factory :post do
    content  "some content"
    styles   "styles here"
    team     1
    my_dictionary {'a' => 1, 'b' => 2}
  end

my_dictionary 不会被解释为字典类型。我不知道如何将字典作为 FactoryGirl 中的属性。谁能帮我 ?

4

1 回答 1

2

您观察到的问题来自 Ruby 中的语法歧义。该语言使用花括号来定义散列(您称为字典)以及块(例如,当使用each循环时)。由于您现在使用散列作为该my_dictionary方法的唯一参数,因此解析器不清楚该左大括号是解释为块的开始还是散列。在这种情况下,Ruby 默认采用块假设。

要将解释强制作为方法参数,您可以像这样使用括号:

my_dictionary({'a' => 1, 'b' => 2})

然后,可以毫无歧义地解析该语句。您在这里所拥有的只是您不能轻易省略方法调用的括号的极少数情况之一。

于 2012-06-19T17:12:57.927 回答