如何保存的模型轨道
问题描述:
我一直在google搜索了一会儿数组,但还没有找到任何答案如何保存的模型轨道
我有模型称为答案,调查的问题。现在在一项调查中,最多可以有200个问题,因此一项调查可以在页面中生成多达200个答案模型。
的问题是:我怎么能回答的阵列我有保存在一个单一的DB-行动,并在阵列上不重复,节省每个单独的元素,这需要大量的时间比较?
答
您可以通过“belongs_to的”关系的:自动保存符号。这将导致在保存父项时自动保存答案。像这样的东西那么很可能是你想要什么:
class Survey < ActiveRecord::Base
has_many :questions
end
class Question < ActiveRecord::Base
belongs_to :survey, :autosave
has_one :answer
end
class Answer < ActiveRecord::Base
belongs_to :question, :autosave
end
我不知道究竟怎么了,这将在幕后进行的,但它可以让ActiveRecord的优化SQL并删除需要你明确地迭代在关系上。
+0
好吧,我试着用:autosave => true。现在我曾经通过调用调查 Hopeanuoli 2009-10-20 10:36:12
答
不管你做什么,不要忘记你的包裹多个插入在一个事务中。会真的加快速度。
我发现这个http://www.coffeepowered.net/2009/01/23/mass-inserting-data-in-rails-without-killing - 你的表现/最后还有一个带有导入的扩展名。这可能是最简单的方法得到它速度快,根据评论,因为如果你指定例如myslq进口模块,然后做一个进口,它应该做的是在一个SQL动作。 – Hopeanuoli 2009-10-21 12:56:10