Это:
Task.safely.create!(name: hash["name"], category: hash["category"], ...)
точно так же, как это:
Task.safely.create!({name: hash["name"], category: hash["category"], ...})
, что так же, как это:
h = { name: hash['name'], ... }
Task.safely.create!(h)
Так что вы можете, вероятно,просто сделайте это:
Task.safely.create!(hash)
Когда вы делаете что-то вроде этого:
o.m(:a => 'b', :c => 'd')
Ruby замечает, что вы предоставляете хеш-литерал без обычной оболочки {...}
, и добавляет его длявы;Подобные вещи работают в конце любого списка аргументов:
o.m(a, b, :c => 'd', :e => 'f')
- это то же самое, что:
o.m(a, b, { :c => 'd', :e => 'f' })