我有两个表,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')>我不知道active record从哪里得到这个info_closures.city_closure_id,因为InfoClosure与CityClosure没有任何连接,是CityClosure为InfoClosure提供了一个外键
在CityClosure模型上,我确实有一个has_many :info_closure
如何执行此查询?为什么活动记录是这样链接的??
发布于 2017-03-08 03:38:10
这是一个快速的,仍然会张贴答案,以便其他人有相同的问题,可以找到解决办法。
在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发布于 2017-03-08 04:05:59
我想你犯了个错误:
在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)https://stackoverflow.com/questions/42662494
复制相似问题