Rails Postgresql несколько схем и одно и то же имя таблицы

У меня есть две таблицы в двух разных схемах, например. cases и events.

В каждой схеме у меня есть таблица basic

  • events.basic
  • cases.basic

Эти таблицы имеют отношения:

  • 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: Ruby 1.9.3, Rails 3.1.3, gem 'pg'

Мне нужен ответ на следующие вопросы:

  1. как справиться с этой ситуацией в Rails Active Record?
  2. как запросить эти таблицы?
  3. как справиться с этой ситуацией в rake db:schema:dump

EDIT:

После изменения 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. Я должен быть закончен, используя некоторые псевдонимы:

SELECT t1.* FROM "events". "basic" t1 INNER JOIN "cases". "basic" t2 ON t1. "case_id" = t2. "case_id" LIMIT 3


EDIT 2: Это была моя ошибка, я не добавил столбец events.basic.case_id и внешний ключ в моей базе данных. Это работает!


Вопросы 1 и 2 работают, но у нас есть вопрос о rake db:schema:dump что с этим делать? Rails генерирует модели только для публичных схем.

У меня так много таблиц и отношений, что я хочу их сгенерировать.

6
задан Jacek Wysocki 9 December 2011 в 07:19
поделиться