Как определить схему, для которой установлена ​​модель рельсов? - PullRequest
1 голос
/ 24 декабря 2010

Например, когда я генерирую модель Event, таблица автоматически устанавливает общедоступную схему.Как мне указать его для установки другой схемы?

Кроме того, как вы изменяете схему существующей таблицы?Возможно, переместите его в другую схему?

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

Отказ от ответственности: я не знаю rails, поэтому я собираюсь дать очень постгресклиновые ответы здесь.Что касается первой части вашего вопроса, вполне возможно, что есть гораздо лучший способ сделать это, заставляя rails указывать схему при создании таблиц.

В PostgreSQL таблицы ищутся в схемах в соответствии с search_path настройка.По умолчанию установлено значение "$user",public.Таблицы создаются в первой найденной схеме в пути поиска.Поэтому, если вы подключитесь как «my_user», он попытается создать таблицы в «my_user» и обратится к созданию их в «public», если «my_user» не существует.

Так что один из подходовобновите параметр "search_path", используемый для пользователя, которого вы подключаете к базе данных, чтобы внести изменения в схему.Например, вы можете сказать ALTER USER my_user SET search_path = my_app, public.Если вы затем создадите схему «my_app», то последующие CREATE TABLE foo(...) команды, выполняемые «my_user», поместят новую таблицу в «my_app».

Вы можете изменить схему таблицы, используя ALTER TABLE foo SET SCHEMA my_app.

0 голосов
/ 24 декабря 2010

Создайте миграцию для создания новой схемы.ActiveRecord не может обновить вашу схему, это система шаблонов.Вы можете попробовать сиквел или DataMapper, если хотите обновить схему из своего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...