Zac*_*ert 5 ruby named-scope ruby-on-rails rails-activerecord
我正在尝试合并两个范围或向现有范围添加更多内容。
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)
Run Code Online (Sandbox Code Playgroud)
我无法确定如何将OR它们组合在一起或合并到一个范围中。有什么建议/指导吗?我更希望将它们合并到一个范围中。
Rails 4 及更早版本不支持OR“本机”查询。看起来它将在 Rails 5 中引入。
现在,您必须使用 SQL.where方法:
YourModel.where('field1 = ? OR field2 = ?', 1, 2)
Run Code Online (Sandbox Code Playgroud)
但是,在您的情况下,您选择使用IN和=查询,并且第一个字段位于两个范围内。所以,这没有多大意义。无论如何,如果你真的有必要,你可能会逃脱这个:
data = YourModel.public_bids.outbid_maxbids
YourModel.where(data.where_values.inject(:or))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4429 次 |
| 最近记录: |