如何为此执行Rails Active Record查询

时间:2014-02-08 13:22:06

标签: sql ruby-on-rails activerecord

我需要按国家/地区在我的控制器中过滤我的模型。我的模型有4个位置字段,

loc1, loc2, loc3 and loc4

该国家/地区位于loc3loc4。如果国家/地区位于loc3,则loc4为空。

我的模型上有一个名为country的方法可以返回该国家/地区,但我无法在我的Active Record查询中使用该方法。

如何查看查看loc3和loc4的AR查询,如果loc4为空,则使用loc3 ad如果loc4不为空,则使用loc4。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

如果您使用的是postgres或mysql,则可以使用COALESCE函数

Model.select("COALESCE(loc4, loc3) AS location")

在你的控制器中,你可以说

model.location

答案 1 :(得分:0)

只需使用普通的where方法(如果用空格表示"")。

Model.where(country: (loc3 || loc4))