2017-03-08 21 views
0

私は、外部キー列CityClosure.info_closure_idを持つ2つのテーブルInfoClosureとCityClosureを持っています。アクティブレコード内部結合

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のForeignClockをInfoClosureに持つCityClosureです

CityClosureモデルにはhas_many :info_closureがあります

このクエリはどのように実行できますか?なぜこのようにアクティブなレコードがリンクされていますか?

答えて

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 
0

を追加しました:私はhas_manyのを持っているCityClosureモデルに

を: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)