如何使用字符串数组一次创建多个ActiveRecord对象?

时间:2016-02-04 19:47:48

标签: ruby-on-rails activerecord refactoring splat

我有一个字符串数组:

days = ["Monday", "Tuesday", "Wednesday"]

我想在数据库中创建一个以每个人命名的日子:

days.each do |day|
  Day.create(name: day)
end
然而,这并不是那么可爱。在过去,我已经能够通过splat将它们传递到attr_accessor来清理属性列表:

attr_accessor *ATTRIBUTES

我希望能够做到这样的事情:

Day.create(name: *days)

ActiveRecord是否有类似的界面?

1 个答案:

答案 0 :(得分:1)

您可以一次创建它们:

Day.create(days.map { |day| {name: day} })

create提到的文档:

  

如果验证通过,则创建一个对象(或多个对象)并将其保存到数据库。 attributes参数可以是Hash的{​​{1}}或Array