我是Rails的新手,我遇到的问题如下:

首先,有一张带房屋的桌子。房屋有多个与has_many相关的日期:日期

其次是带日期的桌子。约会有协会属于:房屋

现在,在搜索中,用户可以选择一个开始和终点。我想做的就是搜索每个房子的日期,并检查它们是否在开始和终结之间。如果一个或多个日期在开始/结束日期内,则需要找到。

这些是我搜索其他标准的条件:

parameters.push( [ params[:house_category_id], "houses.house_category_id = ?" ] );
parameters.push( [ params[:province_id], "houses.province_id = ?" ] );

我创建了一种使用这些参数创建有效条件的方法。

请告诉我,如果还不够清楚,因为很难解释。

我已经尝试搜索此问题,但是除了带有答案的页面外,它还让我在其他所有页面上。

谢谢

有帮助吗?

解决方案

不确定我是否正确理解您的问题,但是根据我的理解,您可以使用以下内容获得所需的结果:

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”和“ 2011-01-11”是用户选择的日期。

让我知道这是您要寻找的内容还是发布更多详细信息。

其他提示

现在我想到了另一个问题,但我不知道是否可能。

一所房子附有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')

但这似乎不起作用,这在单个查询或单个查找()中是否可以?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top