导轨,在has_many关联中找到具有多个日期的对象
-
10-10-2019 - |
题
我是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')
但这似乎不起作用,这在单个查询或单个查找()中是否可以?
不隶属于 StackOverflow