我正在尝试合并两个范围或向现有范围添加更多范围。
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
在一起或将它们合并到一个范围内。有什么建议/指导吗?我更希望将它们组合成一个范围。
最佳答案
我没有尝试在作用域中使用 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
关于ruby-on-rails - 使用 OR 组合多个命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445203/