RoR 初学者在这里使用 rails 3.2.3 和 ruby 1.9.3
目前,我正在尝试显示与用户在两个 date_time 上选择的日期相匹配的酒店的可用性。
scope :by_availabilities, lambda { |first_day, last_day|
joins(:rooms).
joins('INNER JOIN availabilities ON rooms.id=availabilities.room_id').
where(get_my_where(first_day, last_day)).
group('hotels.id'<other fields>
}
def self.get_my_where(first_day, last_day)
difference = (last_day-first_day).to_i
condition = ""
if (difference==1)
condition = "availabilities.day = '#{first_day}'"
condition+=""
else
for i in 1..difference do
if(i==difference)
condition +="(availabilities.day = '#{first_day}' AND availabilities.availability > 0)"
else
condition+="(availabilities.day = '#{first_day+i}' AND availabilities.availability > 0) AND "
end
end
end
--other innerjoins--
first_day 是 in 日期, last_day 是 out 日期,两者都已正确声明且日期格式正确。
我正确地传递了参数,问题是如果我选择今天的日期和明天的过期日期,我只会得到正确的搜索结果。如果我在两者之间放置更多天,搜索根本不会给我任何结果,即使那些日子在数据库中有可用的数据。
这不是执行此操作的方法吗?我不能把这个搜索放在控制器上,因为有很多 INNER JOINS 并且它变得“丑陋”,并且其他过滤器的所有搜索都正常工作,直到我实现了这个。
提前致谢