|
|
1
1
一种选择是使用普通SQL。 如果我正确理解了您的模式,那么您所追求的是需要左连接而不是OR运算符的东西。内部联接上的OR运算符将无法实现您希望的结果,因为任何只有截止日期但没有报告的记录都不会被返回。相反,LEFT JOIN会返回截止日期或报表表中有匹配用户id的所有帐户记录。
在Rails 4中,我相信您可以为连接指定SQL代码,同时像通常一样链接where子句。因此,这将成为:
然后可以访问所有联接表的结果。 注意,添加了链接到第一个where子句的第二个where子句,有效地避免了纯文本条件,以确保报告和截止日期都不是空的。 如果通过“用户”属性将表连接在一起,则可以使用普通活动记录查询来使用
另一种避免左联接的方法是,对一个表使用内部联接,对另一个表使用具有内部联接的类似查询进行并集。为此,必须使用
不管是哪种方式,编写包含用户条目的where子句条件的SQL通常都比较容易,而不是猜测Rails将如何创建所需的查询。 |
|
|
2
1
这在Rails 5.0及更高版本中是可能的。 指南中有一节介绍了如何做到这一点: http://guides.rubyonrails.org/active_record_querying.html#or-conditions 唯一的 接住 对于连接,它们需要在两个关系中复制,以使整个查询在结构上兼容:
|
|
cluster1 · 采取独立的新行动的好处是什么? 1 年前 |
|
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 1 年前 |
|
|
Fred Willmore · Rails控制器不呈现任何模板 2 年前 |
|
|
Diogo Amaral · 实现API请求的正确方式 2 年前 |
|
|
Meknassih · 在控制器方法中分配给模型没有任何作用 2 年前 |
|
|
Michael Ding · Rails上的默认会话到期问题 2 年前 |
|
|
Flávio · 基于另外两个生成数组 2 年前 |