here'ActiveRecord - 可选匹配

时间:2018-04-16 15:08:06

标签: ruby-on-rails activerecord

如果我有一个具有多个关系的Case模型,我该如何创建一个匹配一个或多个关系的查询。

示例:Case具有名称的公司。 Case还有很多会话都有回应。我想创建一个查询,我可以搜索其中一个或多个匹配(公司名称和/或会话响应)。如果没有公司,但会话响应匹配,则应该返回,反之亦然。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

sql_cond = 'companies.id IS NOT NULL OR sessions.id IS NOT NULL')
Case.includes(:company, :sessions).references(:company, :session).where(sql_cond)

它将返回至少有1 Case OR Company条记录的Session条记录。