首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动记录内连接

活动记录内连接
EN

Stack Overflow用户
提问于 2017-03-08 03:33:58
回答 2查看 37关注 0票数 0

我有两个表,InfoClosure和CityClosure,它们有一个外键列CityClosure.info_closure_id。

我想得到所有的CityClosures,其中的InfoClosure.ReferenceDate是一个特定的日期范围。

我想做以下几件事:

代码语言:javascript
复制
city_closures = CityClosure.joins(:info_closure).where("info_closures.ReferenceDate >= ? AND info_closures.ReferenceDate <= ?", dateToQueryStart, dateToQueryEnd)

但我知道错误了

代码语言:javascript
复制
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

如何执行此查询?为什么活动记录是这样链接的??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-08 03:38:10

这是一个快速的,仍然会张贴答案,以便其他人有相同的问题,可以找到解决办法。

在InfoClosure模型中,我与CityClosure没有任何连接,与InfoClosure的连接也是错误的。

所以我加入了has_many :city_closure

代码语言:javascript
复制
class InfoClosure < ActiveRecord::Base
  belongs_to :local
  has_many :city_closure
end

belongs_to :info_closure

代码语言:javascript
复制
class CityClosure < ActiveRecord::Base
  belongs_to :info_closure
end
票数 1
EN

Stack Overflow用户

发布于 2017-03-08 04:05:59

我想你犯了个错误:

在CityClosure模型上,我确实有一个has_many :info_closure

你可以这样做:

代码语言:javascript
复制
class InfoClosure < ActiveRecord::Base
  has_many :city_closures, dependent: :destroy
end

class CityClosure < ActiveRecord::Base
  belongs_to :info_closure
end

查询如下:

代码语言:javascript
复制
city_closures = CityClosure.joins(:info_closure).where("info_closures.ReferenceDate >= ? AND info_closures.ReferenceDate <= ?", dateToQueryStart, dateToQueryEnd)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42662494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档