我需要像中标一样获取出价,并且出价可以针对不同的日期(不要问为什么),因此我需要选择每天最低出价的出价。
这是我的模型
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) 只是在这里解释它,我不是到处使用它,不是。
提前致谢