积极记录内部加入

时间:2017-03-08 03:33:58

标签: mysql ruby-on-rails activerecord

我有两个表,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

我该如何执行此查询?为什么活动记录以这种方式链接?

2 个答案:

答案 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)