我对Rails很陌生,我遇到的问题描述如下:
首先,有一张有房子的桌子。 这些房屋有多个与has_many相关的日期:日期
其次是有日期的表格。 日期有关联belongs_to:house
现在,在搜索中,用户可以选择开始日期和结束日期。 而我想要做的是搜索每个房子的日期,并检查它们是否在开始日期和结束日期之间。如果一个或多个日期在开始/结束日期之内,则需要找到它。
这是我搜索房屋以寻找其他标准的条件:
parameters.push( [ params[:house_category_id], "houses.house_category_id = ?" ] );
parameters.push( [ params[:province_id], "houses.province_id = ?" ] );
我创建了一个使用这些参数创建有效条件的方法。
请告诉我,如果不够清楚,请说明有点难以解释。
我已经尝试过搜索这个了,但除了带答案的页面之外,它还有我所有其他页面。
由于
答案 0 :(得分:0)
不确定我是否理解您的问题,但根据我的理解,您可以使用以下方法获得所需的结果:
res = House.find(:all, :select => 'distinct houses.*', :joins => "INNER JOIN dates ON dates.house_id = houses.id", :conditions => "dates.date < '2011-01-12' AND dates.date > '2011-01-11'")
其中'2011-01-12'&amp; '2011-01-11'是用户选择的日期。
如果您正在寻找或发布更多详情,请告诉我。
答案 1 :(得分:0)
现在我脑子里浮现出另一个问题,但我不知道这是否可能...... 如果你忘记了这种情况的从 - 到,我是否有可能检查这种类似的关联:
房子有2个日期。
用户选择2个日期。
现在我只想选择这两个日期对应的房子..
像这样:
@houses = House.find(:all, :select => 'distinct houses.*', :joins => "INNER JOIN dates ON dates.house_id = houses.id", :conditions => "dates.date = '2011-01-12' AND dates.date = '2011-01-11'")
我尝试了上面的代码并获得了这样的SQL:
SELECT distinct houses.* FROM `houses` INNER JOIN dates ON dates.house_id = houses.id WHERE (dates.date = '2011-01-15' AND dates.date = '2011-01-22')
但它似乎不起作用,这在单个查询或单个find()中是否可行?