【发布时间】:2010-10-08 09:39:25
【问题描述】:
我正在开发一个拼车应用程序,用户可以在其中添加电梯,并能够为每个电梯选择多个停靠点(A 到 B,通过 c、d、e)。现在,当用户在数据库中搜索电梯时,结果还应包括“A 到 d”、“c 到 B”或“c 到 e”等电梯。
我使用下面的代码与 Rails 2.3.5 一起工作,但很难将其移至 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
)
【问题讨论】:
标签: ruby-on-rails activerecord mysql ruby-on-rails-3