在我的 Rails 应用程序中,我有一个项目模型和一个关联的任务模型(项目有很多任务)。每个任务都有一个名为parent_task_id 的字段,该字段将其链接到先前版本中的任务。当在新版本中创建新任务时,它通过将parent_task_id设置为等于自己的task_id来引用自身。
我正在尝试编写一个查询来查找新项目版本中的所有任务,其中parent_task_id等于task_id - 这将识别最新版本中新添加的记录。
但是,我当前的查询返回一个空数组,即使我知道有匹配的记录。这是我到目前为止所得到的: new_tasks = new_project.tasks.where('tasks.task_id =tasks.parent_task_id')
new_tasks = new_project.tasks.where('tasks.task_id = tasks.parent_task_id')
预期产出
{
task_id: 64741,
parent_task_id: 64741,
# other attributes...
}
如何正确构造此 ActiveRecord 查询以查找parent_task_id 等于task_id 的任务?对于这样的自引用条件,ActiveRecord 是否有特殊考虑?
任何帮助或提示将不胜感激。谢谢!
使用 Rails 内置的 Arel 来代替查询字符串来编写查询:
table = Arel::Table.new(:tasks)
new_tasks = new_project.tasks.where(t[:task_id].eq(t[:parent_task_id]))