我正在尝试组合两个范围或向现有范围添加更多范围。
scope :public_bids, -> {
where(status: [Status::ACCEPTED, Status::OUTBID, Status::SOLD, Status::NO_SALE],
bid_type: [BidType::MANUAL, BidType::AUTO, BidType::LIVE])
scope :outbid_maxbids, -> {
where(status: Status::OUTBID, bid_type: BidType::MAXBID)
我无法确定如何将OR
组合在一起或将其合并到一个范围内。有什么建议/指导吗?我希望将它们组合成一个单一的范围。
答案 0 :(得分:1)
答案 1 :(得分:1)
我还没有尝试在范围内使用or
,但您可以使用Rails 5的新or
方法将范围链接在一起,如下所示:
scope :public_or_outbid, -> {
where(status: [Status::ACCEPTED, Status::OUTBID, Status::SOLD, Status::NO_SALE], bid_type: [BidType::MANUAL, BidType::AUTO, BidType::LIVE])\
.or(where(status: Status::OUTBID, bid_type: BidType::MAXBID))
}
(请注意,这仅适用于Rails 5)
你当然可以将这些条件联系起来:
MyObj.public_bids.or(MyObj.outbid_maxbids)
有关详细信息,请参阅此答案:Rails 5: ActiveRecord OR query