私はモデルを持っています:
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
しかし、それは奇妙なフィールドを返します。これは、選択クエリでテーブル名を指定していたため、機能しました。
何か案が?