Rails: определить имена столбцов для модели - PullRequest
1 голос
/ 26 октября 2009

У меня есть база данных (Postgresql). Как я могу создавать модели из него? Как я могу передать имена столбцов для Rails? Как будто что-то вроде этого:

лицо:

Имя: table_name_for_name_attribute Фамилия: имя_таблицы_для_символа PersonalCode: table_name_for_perconal_code_attribute

К сожалению, моя база данных не соответствует соглашению Rails, потому что не все таблицы названы на английском языке. Любые идеи, как я могу отобразить это?

UPDATE Сценарий reverse_scaffold генерирует только модель, но мне также нужен контроллер и формы просмотра.

Ответы [ 3 ]

1 голос
/ 26 октября 2009

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

class MyLegacyTable < ActiveRecord::Base
  self.table_name = "some_name"
  self.primary_key = "some_name_primary_key_field"
end

Как только вы это сделаете, ActiveRecord узнает some_name_primary_key_field как id, что значительно облегчает жизнь.

1 голос
/ 26 октября 2009

Вы можете определить имя таблицы, не соответствующее модели, используя метод table_name.

class MyModel < ActiveRecord::Base
    def self.table_name
        'my_table_name'
    end
end

Измените значение my_table_name на ваше эффективное имя таблицы.

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

0 голосов
/ 27 октября 2009

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

Как уже говорили другие, вы можете указать имя таблицы в модели.

Что касается генерации контроллеров / представлений, у вас есть свои собственные. Скрипт / генерация скаффолда устарела. Он по-прежнему работает даже при создании вещей, но вам нужно передать все имена столбцов и время в командной строке.

Вместо этого посмотрите на ActiveScaffold Plugin , он имеет аналогичный конечный результат. Но гораздо надежнее и легче адаптируется к изменениям модели.

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