Rails + ActiveRecord:如何编写条件“一个或两个都不正确”?

时间:2019-04-02 21:22:33

标签: ruby-on-rails ruby postgresql activerecord

在我的模型Listing中,除其他列外,我有以下两列:

- seller_currency
- bidder_currency

listings.seller_currencylistings.bidder_currency的值可以是1(USD)或0(EUR)。

我正在尝试获取所有列表,其中seller_currencybidder_currency0(EUR)或其中至少一个是0(EUR)。

有没有比这更好的写条件的方法了?

Listing.where('(seller_currency=0) OR (bidder_currency=0) OR (seller_currency=0 AND bidder_currency=0)')

2 个答案:

答案 0 :(得分:3)

根据您的示例,足以满足至少一个条件。

Listing.where(seller_currency: 0).or(Listing.where(bidder_currency: 0))

答案 1 :(得分:0)

您只需要一个或一个条件,它就覆盖了它们都为0的情况。这种方法比较可取,因为它可以同时计算两个列,因此查询速度更快。 另外,如果要使用变量,问号会停止sql注入。

Listing.where("(seller_currency=?) OR (bidder_currency=?)",0,0)