活动记录内部加入

问题描述:

我有两个表,InfoClosure和CityClosure,它有一个外键列CityClosure.info_closure_id。活动记录内部加入

我想获取InfoClosure.ReferenceDate属于特定日期范围的所有CityClosures。

我试图做到以下几点:

city_closures = CityClosure.joins(:info_closure).where("info_closures.ReferenceDate >= ? AND info_closures.ReferenceDate <= ?", dateToQueryStart, dateToQueryEnd) 

但我得到的错误

StatementInvalid: Mysql2::Error: Unknown column 'info_closures.city_closure_id' in 'on clause': SELECT `city_closures`.* FROM `city_closures` INNER JOIN `info_closures` ON `info_closures`.`city_closure_id` = `city_closures`.`id` WHERE (info_closures.ReferenceDate >= '2017-01-01' AND info_closures.ReferenceDate <= '2017-02-28')> 

我不知道在哪里活动记录越来越这info_closures.city_closure_id因为InfoClosure与CityClosure没有任何关系,CityClosure具有InfoClosure的外键

CityClosure模型我确实有has_many :info_closure

我怎么能执行这个查询?为什么活动记录以这种方式连接?

这是一个快速的答案,仍然会发布答案,以便其他具有相同问题的人可以找到解决方案。

在InfoClosure模型中,我没有与CityClosure建立任何连接,并且与InfoClosure的连接错误。

所以我添加has_many :city_closure

class InfoClosure < ActiveRecord::Base 
    belongs_to :local 
    has_many :city_closure 
end 

belongs_to :info_closure

class CityClosure < ActiveRecord::Base 
    belongs_to :info_closure 
end 

我觉得你在这里度过了一个错误:在CityClosure模式我有一个的has_many

:info_closure

你可以这样做:

class InfoClosure < ActiveRecord::Base 
    has_many :city_closures, dependent: :destroy 
end 

class CityClosure < ActiveRecord::Base 
    belongs_to :info_closure 
end 

和查询为:

city_closures = CityClosure.joins(:info_closure).where("info_closures.ReferenceDate >= ? AND info_closures.ReferenceDate <= ?", dateToQueryStart, dateToQueryEnd)