ActiveRecordで結合処理時のperhaps you misspelled it?
1512 ワード
Rails4でテーブルをleft outer join しようとしたら以下のエラーが出てはまったのでメモ。
Association named 'companies' was not found on DailyStockInfo; perhaps you misspelled it?
タイプミスを疑ってさまよっていましたが、modelに外部キーの記載がなかったことが原因でした。
以下のようにmodelを記載すればOK
(参照元テーブルAを参照先テーブルをBとします。)
class TableA < ActiveRecord::Base
has_many :check_stock , foreign_key: [:name,:date]
end
class TableB < ActiveRecord::Base
belongs_to :daily_stock_info ,foreign_key: [:name,:date]
end
このとき生成されたSQLを見ると、結合させたいキーが入れ子になる事象が発生しました。
~
TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.date
AND TableA.date = TableB.name
~
とりあえず、model側の外部キーの記載を入れ子にすることで解消しました。
class TableA < ActiveRecord::Base
has_many :check_stock , foreign_key: [:name,:date]
end
class TableB < ActiveRecord::Base
belongs_to :daily_stock_info ,foreign_key: [:date,:name]
end
その後このケースは再現してないですが、こういったこともあるようです。
Author And Source
この問題について(ActiveRecordで結合処理時のperhaps you misspelled it?), 我々は、より多くの情報をここで見つけました https://qiita.com/TakakiSato/items/a99b2bded52ad59f9ae7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .