2016-02-04 51 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'不會一次創建多個對象。但你可以應用其他一些技巧.. –

相關問題