如何创建一个范围,以返回值为nil或''的记录。在两列中的任何一列?
我提出的是:
scope :missing_coordinates, -> { where("latitude = '' OR longitude = ''") }
但也许在Rails中有一种比较常见的方式。
答案 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) }
我会在这种情况下保持你的方式,但如果你的范围变得更复杂,我会交换链接范围,因为它更容易维护。