【发布时间】:2017-04-27 07:43:16
【问题描述】:
我有两个模型,它们之间的关联是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: ERROR: column 关系“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 并且 "tasks"."id" = 47394
请告诉我如何使用update_all
【问题讨论】:
标签: ruby-on-rails postgresql ruby-on-rails-4 update-all