2
|
David Hempy · 技术社区 · 6 年前 |
![]() |
1
1
如果您确实想要这种结构,那么您可以这样做:
当然
是的,这是使用字符串插值来构建SQL代码段,但在这种情况下是完全安全的,因为您正在构建所有字符串,并且您确切地知道其中的内容。如果你把它放在一个范围内,那么至少丑陋会被隐藏起来,你可以用你的测试套件轻松地覆盖它。
或者,您可以利用一些等价物。一
并且记录(甚至匿名记录)会逐列进行比较,因此这些记录是等效的:
这意味着类似这样的事情:
应该给你同样的结果。或更一般地:
再一次,你想把这种丑陋隐藏在一个范围内。 |
![]() |
2
0
*这是一个不错的解决方法,但并不完全是ORM问题的解决方案* 在ActiveRecord中找不到正确的方法来实现这一点,我只是猜测,希望是最好的:
这不起作用。因此,我在范围内使用了原始SQL,这确实有效:
我仍然希望在ORM中找到如何做到这一点,或者阅读关于解决问题的完全不同方法的建议。由于它都封装在一个作用域和一个常量中,所以以后重构就很简单了,将常量和作用域分开将允许进行无痛的测试。 |
|
tggtsed · PostgreSQL从平均值中排除值 1 年前 |
![]() |
Dawid · 为什么我不能在子查询中使用表别名? 2 年前 |
![]() |
CraZyCoDer · 在PostgreSQL中锁定潜在事务 2 年前 |
![]() |
ranebec · 计数时如何返回0而不是null? 2 年前 |
![]() |
Flo · 分组依据中的SQL大小写 2 年前 |