我正在尝试设置一个范围查询,我可以在其中找到已支付(或部分支付)发票的客户。
但是,我想在范围中使用的值实际上并不在数据库中,它是一种方法。
例如:
投标人.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'
我需要改变什么才能让这样的事情起作用?我什至应该使用范围吗?
另外,如何更改该范围以搜索“未付费”和“部分”值?
谢谢