ActiveRecord::StatementInvalid:
Mysql::Error: Unknown column 'schedules.id' in 'on clause':
SELECT `schedules`.* FROM `schedules` INNER JOIN `shops` ON
(`schedules`.`id` = `shops`.`shop_id`) INNER JOIN `areas` ON
(`areas`.`id` = `shops`.`area_id`)
Правильная формулировка SQL должна включать в себя «график» «shop_id» = «магазины» Ид 'вместо «графики» «идентификатор» = «магазины» «shop_id» , Что я могу изменить в своих моделях, чтобы это произошло?ActiveRecord присоединиться has_many:.... Через
Вот модели для этих трех классов:
class Area < ActiveRecord::Base
has_many :shops
has_many :schedules, :through => :shop
end
class Schedule < ActiveRecord::Base
belongs_to :shop
has_many :areas, :through => :shop
end
class Shop < ActiveRecord::Base
belongs_to :area # foreign key - area_id
has_many :schedule
end
Команда, которая создала эту команду SQL: Schedule.find: все,: присоединяется => [: магазин,: районы]
В дб/schema.rb у меня есть:
create_table "areas", :force => true do |t|
t.string "campus"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "shops", :force => true do |t|
t.integer "area_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "schedules", :force => true do |t|
t.integer "shop_id"
t.datetime "created_at"
t.datetime "updated_at"
end
Это помогло бы видеть вас схему базы данных DB/schema.rb и код, полученный, что SQL. – thomasfedb
Не уверен, что синтаксис простого соединения работает с: через. Когда все становится сложным, я просто использую подробный формат: : joins => ["INNER JOIN магазины ON schedules '.' Shop_id '=' магазины '.' Id '", ...] – aceofspades