如何通过匹配同一条记录中的参数来查询记录?

问题描述 投票:0回答:1

在我的 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 是否有特殊考虑?

任何帮助或提示将不胜感激。谢谢!

ruby-on-rails-3 activerecord
1个回答
0
投票

使用 Rails 内置的 Arel 来代替查询字符串来编写查询:

table = Arel::Table.new(:tasks)
new_tasks = new_project.tasks.where(t[:task_id].eq(t[:parent_task_id]))
© www.soinside.com 2019 - 2024. All rights reserved.