落札者の入札と同じように取得する必要があり、入札は別の日付に行われる可能性があるため (理由は聞かないでください)、毎日の最低入札価格で入札を選択する必要があります。
ここに私のモデルがあります
Leilao
has_many :bids
Bid
belongs_to :leilao
#winner_name
#price
#date
私はすでに解決策を試し、必要なものに近づきました。問題は、場合によっては、より低い価格で新しい入札を作成すると、結果が変わらない理由がわからないことです。
Leilao.find(1).bids.having('MIN("bids"."price")').group('date').all
これは機能しているように見えますが、前述したように、新しい入札を作成すると機能しない場合があります。しかし、一度は正常に機能しました。それで、何が起こっているのか知っているなら、教えてください。
次に、これを行うための何らかの方法を検索したところ、次のものが得られました
Leilao.find(1).bids.minimum(:price, :group => :date)
これは適切に機能しますが、これを使用すると、日付と価格をフェッチするだけで、すべての入札データが必要になります。
こうすれば取れるんだけど、すごく気持ち悪い
winner_bids = Leilao.find(1).bids.minimum(:price, :group => :date)
winners_data = []
winner_bids.each do |date, price|
winners_data << Leilao.find(1).bids.where(price: price, date: date).first
end
winners_data
これを行うためのより良い方法はありますか?または、私の最初のアプローチの何が問題になっていますか?
これは学術的な提案のためだけなので、パフォーマンスは問題ではありませんが、私にとっては不快に感じます
また、それらの Leilao.find(1) は、ここで説明するためのものです。私はそれをあちこちで使用しているわけではありません。
前もって感謝します