活动记录内部加入
问题描述:
我有两个表,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)