0

請求書を支払った (または部分的に支払った) 顧客を見つけることができるスコープ クエリを設定しようとしています。

ただし、スコープで使用したい値は実際にはデータベースになく、メソッドです。

例えば:

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'

このようなものを機能させるには、何を変更する必要がありますか? スコープを使用する必要がありますか?

また、その範囲を変更して「未払い」と「部分」の両方の値を検索するにはどうすればよいですか?

ありがとう

4

1 に答える 1