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 に答える