2016-02-04 48 views
0

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

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

我想每个这些命名的数据库中创建日:

days.each do |day| 
    Day.create(name: day) 
end 

这是不那么可爱,但是。在过去,我已经能够清理属性列出了它们传递到attr_accessor用图示:

attr_accessor *ATTRIBUTES

我期待能够做这样的事情:

Day.create(name: *days) 

是否有类似于ActiveRecord的界面?

回答

1

可以一气呵成创建它们:

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

create文档中提到:

创建一个对象(或多个对象),并将其保存到数据库中,如果验证通过。属性参数可以是HashArrayHashes

+0

感谢您的支持!准确回答问题。但是,我真正的用例需要#find_or_create。查看#find_or_create的文档后,它看起来没有相同的功能。你看到一样吗? –

+0

@DylanRichards我看到一样的。 'find_or_create_by'不会一次创建多个对象。但你可以应用其他一些技巧.. –

相关问题