Rails在其中一个变量中的范围为nil或blank

时间:2018-06-13 19:04:07

标签: ruby-on-rails

如何创建一个范围,以返回值为nil或''的记录。在两列中的任何一列?

我提出的是:

scope :missing_coordinates, -> { where("latitude = '' OR longitude = ''") }

但也许在Rails中有一种比较常见的方式。

1 个答案:

答案 0 :(得分:0)

一种有趣但更冗长的方式(因为它使用链式范围,因此它更长,但更加棘手)你可以链接范围,如果在Rails5上使用ActiveRecord的OR,那么:

scope :bad_longitude, -> { where(longitude: '') #This will return all nil and blanks
scope :bad_latitude, -> { where(latitude: '' )

scope :missing_coordinates, -> {bad_longitude.or(bad_latitude) }

我会在这种情况下保持你的方式,但如果你的范围变得更复杂,我会交换链接范围,因为它更容易维护。