У меня есть две таблицы в двух разных схемах, например
cases
и events
.
В каждой схеме у меня есть базовая таблица
Эти таблицы имеют отношения:
events.basic
имеет один cases.basic
(cases.basic
имеет много events.basic
)
Мои попытки не увенчались успехом:
файл cases_basic.rb
class CasesBasic < ActiveRecord::Base
set_table_name 'cases.basic'
set_primary_key 'case_id'
has_many :Events, :class_name => 'EventsBasic', :foreign_key => 'case_id'
end
файл events_basic.rb
class EventsBasic < ActiveRecord::Base
set_table_name 'events.basic'
set_primary_key 'event_id'
belongs_to :Case, :class_name => 'CasesBasic', :foreign_key => 'case_id'
end
Enviroment:
Рубин 1.9.3
, Рельсы 3.1.3
, gem 'pg'
Мне нужен ответ на этот вопрос:
- как справиться с этой ситуацией в Rails Active Record?
- как запросить эти таблицы?
- как справиться с этой ситуацией в
rake db:schema:dump
РЕДАКТИРОВАТЬ:
После изменения belongs_to
и has_many
(как рекомендует Catcall) у меня та же ошибка
PGError: ERROR: column basic.case_id does not exist
LINE 1: ...IN "cases"."basic" ON "cases"."basic"."case_id" = "events"."...
^
: SELECT "events"."basic".* FROM "events"."basic" INNER JOIN "cases"."basic" ON "cases"."basic"."case_id" = "events"."basic"."case_id" LIMIT 3
Rails генерирует плохой SQL. Я должен был сделать, используя некоторые псевдонимы:
ВЫБРАТЬ t1. * ИЗ "событий". "Базовое" t1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ "case". "Базовое" t2 ON t1. "Case_id" = t2. "Case_id" LIMIT 3
РЕДАКТИРОВАТЬ 2:
Хорошо, это была моя ошибка ***, я не добавил столбец events.basic.case_id и внешний ключ в моей базе данных примера. Работает!
Вопросы 1 и 2 работают, но у нас есть вопрос о rake db:schema:dump
, что на счет Rails генерирует модели только для публичной схемы.
У меня так много таблиц и отношений, что я хочу их сгенерировать.