大規模な SQL 結合を引き出すのではなく、Rails の関係を使用して物事を行うことに頭を悩ませようとしてきましたが、これについて頭を悩ませることはできません...
私は3つのモデルを持っています
ホテル 空室情報
それらはすべて、適切な has_many および belongs_to 関係を持っています。
私がやりたいのは、特定の都市のホテルを一覧表示する概要ページです。各ホテルの最低価格を一覧表示したいと考えています。
さて、SQLではもちろん一番下のコードを少し実行しますが、レールでは次のようなことができます...
def self.price
Available.minimum(:price,
:conditions => [ "price <> 0" ])
end
もちろん、これは特定のIDではなく、すべての最低価格を引き出すだけです
問題は、関係 Hotel.find(1234).rooms.availables です。
しかし、ID を参照せずにループ内に入ることができるこのようなことをしたいですか?
SELECT MIN(availables.price)
FROM availables
INNER JOIN rooms ON rooms.id = availables.room_id
INNER JOIN hotels ON hotels.id = rooms.hotel_id
WHERE hotels.id = 5077 and rooms.private = 0 and availables.price <> 0