Как использовать существующую таблицу Postgres в Rails 3 - PullRequest
1 голос
/ 24 февраля 2012

Я совершенно новичок в Rails, но я довольно долго искал и ничего не смог решить эту проблему.Это кажется простым.

Я использую Netbeans, если это имеет значение.

У меня есть база данных Postgres, которая называется диагностика Внутри которой находится таблица с именем диагностика_данные .Он заполнен данными.Довольно много, который генерируется другим приложением и обновляется ежедневно.Есть пара сотен столбцов, которые будут меняться время от времени.Мое приложение rails просто берет эти данные и отображает их в динамической веб-среде.У меня есть схемы прорисовки в примере базы данных, которую я создал в Rails, но я не знаю, как заставить Rails использовать существующую таблицу.

Я создал новое приложение и обновил схему.Использование rb выглядит следующим образом:

ActiveRecord::Schema.define(:version => 20120224014811) do
create_table "diagnostics_data", :force => true do |t|
t.string "orbit_number",                                  :limit => nil
t.string "netcdf_location",                               :limit => 300

Это указывает на то, что я успешно подключился к правильной базе данных.Я даже сгенерировал модель и миграцию для Diagnostics_Data, но ...

>>ActiveRecord::Base.connection.tables
>>   []

ничего не дает.У меня есть сгенерированная модель

class DiagnosticsData < ActiveRecord::Base
end

Но я не могу подключиться к фактической таблице

>>d=DiagnosticsData.first
>>   ActiveRecord::StatementInvalid: Could not find table 'diagnostics_data'

Так что даже если мне придется начинать с нуля, как мне заставить рельсыВ частности, я хотел бы использовать это в простом скаффолде, поэтому я могу просто отбросить мой пример кода, чтобы использовать Модель из моей таблицы с некоторыми классными представлениями и контроллерами.

1 Ответ

5 голосов
/ 24 февраля 2012

Поэтому, когда вы используете rails с существующей базой данных после редактирования файла database.yml, вам не нужно копаться в файле схемы.

Просто откройте файл модели и сделайте что-то вроде этого

class Mammals < ActiveRecord::Base
  set_table_name "tbl_Squirrels"
  set_primary_key :squirrel_id
end

здесь вы также можете указать все имена столбцов, если хотите ссылаться на них так, как вы написали в примере кода.

Здесь есть какая-то магия, когда рейлы с именами, такими как "Id", автоматически становятся первичными ключами, если не указано иное. а также "tablename_id" будет внешним ключом для tablename.

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