我试图设置作用域查询,我可以在其中找到已支付(或部分支付)发票的客户。未使用SQL的Rails作用域
但是,我想在范围中使用的值实际上不在数据库中,这是一种方法。
例如:
Bidder.rb
class Bidder < ActiveRecord::Base
...
scope :unpaid, where(payment_status: 'unpaid')
...
def payment_status
"paid" if whatever
"partial" if whatever
"unpaid" if whatever
end
...
end
当我尝试使用:
@auction.bidders.unpaid
我看到这一点:
SQLite3::SQLException: no such column: bidders.payment_status: SELECT COUNT(*) FROM "bidders" WHERE "bidders"."auction_id" = 7 AND "bidders"."payment_status" = 'unpaid'
我需要做什么来改变以获得像这样的工作?我是否应该使用示波器?
另外,如何更改该范围以搜索“未付”和“部分”值?
感谢
提供模型的更多细节。这里'payment_status'是一个内部实例方法,而不是SQL在调用一个范围时可以组织的属性。 – kiddorails 2013-05-13 19:57:20
这就是为什么我问我是否应该使用'范围'。我想缩小搜索范围的方法是通过从非db数据进行筛选。 – 2013-05-13 20:02:38