2012-06-19 47 views
0

工廠女孩可以做這樣的事情:創建一個字典作爲FactoryGirl屬性

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中的一個屬性。誰能幫我 ?

回答

2

您觀察到的問題來自Ruby中的語法歧義。該語言使用大括號來定義哈希(您稱之爲字典)以及塊(例如,當使用each循環時)。由於您現在使用散列作爲my_dictionary方法的唯一參數,分析器不清楚該開放大括號是否被解釋爲塊或散列的開始。在這種情況下,Ruby默認爲塊假設。

要強制解釋爲方法的參數,你可以用括號像這樣:

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

然後,語句可以毫不含糊地解析。你在這裏只是少數情況下你不能輕易忽略方法調用的括號之一。