如何将 transient 的默认值设置为 hash?

How can I set default value of transient to hash?

我正在尝试创建具有瞬态属性的工厂,当我将其默认值设置为散列时,出现了一些语法错误:

FactoryGirl.define do
  factory :event do
    transient do 
      location {city: nil, state: nil, country: "Polska"}
    end

    name "MyString"
    start_date Date.today+2
    start_time "17:40"
    location_raw "MyLocation"
    description "MyText"
    website "MyString"


    after(:create) do |event, evaluator|
      Location.find_or_create_by(evaluator.location).events << event
    end
  end
end

当我设置为nil时,它工作正常。

transient do 
  location nil
end

我做错了什么?

错误是:

/home/marcin/.rvm/gems/ruby-2.2.2/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `load': /home/marcin/Projects/StreetballKalendarz.pl/spec/factories/events.rb:4: syntax error, unexpected ':', expecting '}' (SyntaxError)
      location {city: nil, state: nil, country: "Polska"}
                     ^
/home/marcin/Projects/StreetballKalendarz.pl/spec/factories/events.rb:4: Can't assign to nil
      location {city: nil, state: nil, country: "Polska"}
                          ^
/home/marcin/Projects/StreetballKalendarz.pl/spec/factories/events.rb:4: Can't assign to nil
      location {city: nil, state: nil, country: "Polska"}

厂妹牙套间评价。所以我认为你需要第二组来让它理解它是一个散列

location { { city: nil, state: nil, country: "Polska" } }