Я понял!Два дня моей жизни.Файл, используемый для импорта базы данных PostgreSQL, имеет в начале:
CREATE SCHEMA employees;
-- and later
CREATE TABLE employees.department;
Я думал, что поскольку Rails генерирует базу данных с помощью rake db:structure:load
, синтаксис файла правильный.
Но когда я создаю таблицу вручнуюusers
в новой пустой базе данных, а затем pg_dump
этой новой базы. У меня нет запроса CREATE SCHEMA
.
И наконец rake db:schema:dump
заполняет schema.rb
таблицами так, как я хочу:
create_table "users", id: :serial, force: :cascade do |t|
t.text "name"
end
Поскольку этот свежий pg_dump
ed-файл имеет запрос CREATE TABLE public.users
. public .
Я думаю, что ключ находится в комментариях в database.yml
файле:
# Schema search path. The server defaults to $user,public
#schema_search_path: myapp,sharedapp,public
Одна картинка более ценна, чем тысяча слов: эторазличия Таблица users
справа переходит к schema.rb
после rake db:schema:dump
Спасибо, ребята, за комментарии.Это убедило меня, что я не совершаю ужасную ошибку.