我正在開發一個汽車聯合應用程序,用戶可以在其中添加電梯,並且可以爲每個電梯選擇多個停靠點(通過c,d,e到A) 。現在,當用戶在數據庫中搜索電梯時,結果還應該包括諸如「A到D」,「C到B」或「C到E」等電梯。
我使用Rails 2.3.5使用下面的代碼工作,但努力把它移到Rails 3.我確信必須有一個更乾淨的方法來實現我想要做的事,並將一些代碼移動到模型。如何修改複雜的sql查詢w /加入到rails 3
如果有人能幫我解決這個問題,那將會很棒。
class Lift < ActiveRecord::Base
has_many :stops
end
class Stop < ActiveRecord::Base
belongs_to :lift
belongs_to :city
end
class City < ActiveRecord::Base
has_one :stop
end
@lifts = Lift.find(
:select => "lifts.id, bs.city_id as start_city_id, bs2.city_id as destination_city_id",
:from => "lifts",
:joins => "LEFT JOIN stops bs ON lifts.id = bs.lift_id
LEFT JOIN stops bs2 ON lifts.id = bs2.lift_id
JOIN cities bc ON bs.city_id = bc.id
JOIN cities bc2 ON bs2.city_id = bc2.id",
:include => [:stops, :cities],
:conditions => "bs.lift_id = bs2.lift_id AND bs.position < bs2.position"
#uses the position attribute to determine the order of the stops
)
我也想過,但我沒有任何關於如何正確處理連接的想法。也許你可以給我一些建議。 – 2010-10-08 15:05:36