我有两个表,InfoClosure和CityClosure,它们有一个外键列CityClosure.info_closure_id。
我想让所有CityClosures的InfoClosure.ReferenceDate属于特定的日期范围。
我正在尝试执行以下操作:
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没有任何连接,它是具有InfoClosure外键的CityClosure
在CityClosure模型上的我有一个has_many :info_closure
我该如何执行此查询?为什么活动记录以这种方式链接?
答案 0 :(得分:1)
这是一个快速的,仍然会发布答案,以便其他有相同问题的人可以找到解决方案。
在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
答案 1 :(得分:0)
我认为你在这里犯了一个错误:
在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)