我有两个模型,它们之间的关联是has_and_belongs_to_many
. 我需要重构代码,因为它会导致 n + 1 个查询。
问题:n+1 个查询
1. 任务
class Task < ActiveRecord::Base
has_and_belongs_to_many :user_groups
end
2. 用户组
class UserGroup < ActiveRecord::Base
has_and_belongs_to_many :tasks
end
要求:
将任务分配给 user_groups
以前的控制器代码:
task_ids.each do |task_id|
find(task_id).update_attributes! user_group_ids: params[:user_group_ids], release_date: params[:release_date]
end
我的尝试:
tasks = Task.where(id: task_ids)
tasks.update_all(user_group_ids: params[:user_group_ids], release_date: params[:release_date])
错误:
ActiveRecord::StatementInvalid (PG::UndefinedColumn: 错误: 关系 "tasks" 的列 "user_group_ids" 不存在
生成的查询:
SQL (0.6ms) UPDATE "tasks" SET "user_group_ids" = 4, "release_date" = '2017-04-27 07:40:26.525357' 其中 "tasks"."deleted_at" 为 NULL AND "tasks"."id" = 47394
请让我知道怎么做update_all