我有類似以下內容:Rails的創建和保存散裝
module Bar < ActiveRecord::Base
belongs_to :foo
...
module Foo < ActiveRecord::Base
has_many :bars, dependent: :destroy
def build_bars
1000.times do |i|
bars.build(num: i)
end
end
def create_default_bars!
build_bars
save
end
注意Foo#build_bars
便宜。即使循環1000次,也只需很少的時間。但是,一旦你點擊了save
,突然ActiveRecord決定執行1000次插入,這非常慢。
我如何寫一個自定義save_the_bars
方法使得其執行對所有bars
我已經建立了一個單一的BULK INSERT查詢(我提醒你,1000 build
s爲顯然是很便宜),但其功能是作爲這個例子中的save
的替代品是什麼?
我期待沿着這個博客帖子的推薦#3線回答:
但因爲我的示例使用build
和依賴於一些稍微平凡的軌道魔法,它如何翻譯它並不是很明顯。基準獎勵積分!
很酷,我會試試看。 –