我有模特:
User(id) # has_many tasks through projects
Project(id, user_id, done:boolean)
Task(project_id, done:boolean)
我正在尝试更新用户的任务done
字段,但是我收到了一个模糊的字段错误,因为项目和任务都有一个done
字段。
为将用户的所有任务标记为已完成而生成的SQL类似于:
>> @user.tasks.update_all(done: true)
UPDATE tasks
INNER JOIN projects ON projects.id = tasks.project_id
SET done = 1
WHERE projects.user_id = 2548
我试过这样做:
@user.tasks.update_all("tasks.done" => true)
但是返回未知字段tasks.done
这很奇怪,因为我曾经在select select上指定表名并且它有效。
有什么想法吗?
答案 0 :(得分:5)
尝试@user.tasks.update_all("tasks.done = 1")
答案 1 :(得分:1)
这将是最短的建议:)
@user.tasks.update_all(done: true)