1

我有模型:

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,这很奇怪,因为我曾经在选择查询中指定表名并且它起作用了。

任何的想法?

4

2 回答 2

5

尝试@user.tasks.update_all("tasks.done = 1")

于 2012-12-17T13:22:50.323 回答
1

这将是最短的建议:)

@user.tasks.update_all(done: true)
于 2012-12-17T14:04:37.687 回答