添加多个HABTM

时间:2017-11-06 14:34:53

标签: ruby-on-rails ruby

我在has_and_belong_to_manyTalk之间存在RatingQuestion关系。我想一次在数百条记录上添加(或删除)关系。

我正在使用for循环,但需要一些时间,因为可能会有数千次谈话。知道如何改进下面的代码吗?

rq = RatingQuestion.find(rating_question_id)
talks.each do |talk|
  talk.rating_questions << rq unless talk.rating_questions.include?(rq)
end

1 个答案:

答案 0 :(得分:1)

您应该将长时间运行的任务移动到后台作业队列中。数据库写入通常非常昂贵,因此当您进入上述数千个关联时,您的请求很可能会超时。

您可以通过批量插入来提高性能,这会将所有插入内容聚合到对数据库的较大INSERT调用中。

然而,这是一个很好的指标,表明你的应用程序结构很糟糕。 所有这些记录必须存在于数据库中吗?它们是否可以在被回答或操纵时创建,而不是全部预先创建?