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})

その後、ステートメントはあいまいさなしに解析できます。ここにあるのは、メソッド呼び出しの括弧を簡単に省略できないまれなケースの 1 つにすぎません。

于 2012-06-19T17:12:57.927 に答える