我在Ruby on Rails的noob。我在这里有一个查询,将显示可用的房间/ ammenity。它确实在C#编程中工作,但我不知道如何在Ruby on Rails中实现它。这个SQL查询的Ruby on Rails代码是什么?
Select distinct A.id, A.a_name From Amenities A
Where A.id not in
(
Select Aa.id From Amenities Aa, Amenity_List AL Where
A.id = AL.amenities_id AND
(
(params[:start_date] BETWEEN AL.checkin AND AL.checkout) OR
(params[:end_date] BETWEEN Al.checkin AND AL.checkout)
)
)
Order by A.id
帮助。谢谢! :)
这里是我的模型:
class Amenity < ActiveRecord::Base
has_many :amenity_lists
has_many :line_items
end
class AmenityList < ActiveRecord::Base
belongs_to :transaction
belongs_to :amenity
scope :range, where(:checkin => (params[:start_date])..(params[:end_date]) || :checkout => (params[:start_date])..(params[:end_date]))
scope :available, find_by_sql(["Select DISTINCT amenities.id, amenities.a_name" +
"where amenities.id NOT IN (Select amenities.id from amenities, amenity_lists where amenity.id = amenity_list.amenities_id AND ?)", :range])
末
我这样的代码吧。但它不起作用。我正在尝试显示start_date和end_date给出的所有可用设施。
这里的日志:
c:/Sites/fourk/app/models/amenity_list.rb:6:
syntax error, unexpected tASSOC, expecting ')' ...ams[:end_date]) || :checkout => (params[:start_date])..(para... ...^c:/Sites/fourk/app/models/amenity_list.rb:6:
syntax error, unexpected ')', expecting keyword_end
与其给我们一些sql并说“把它翻译成rails”,如果描述你真正想做的事情会更好。例如简要描述相关模型与您想要回归的结果之间的关系。 – 2011-05-05 10:11:46