Каков общий способ определения моделей в приложении Rails? - PullRequest
3 голосов
/ 30 января 2012

Все учебники, которые я видел до сих пор для RoR, показали, что я генерирую такие модели, как:

rails generate User name:string placeofbirth:string

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

Итак, мой вопрос, как мне использовать первый подход «код» при создании моих моделей. Или это простой способ просто указать на бумаге нужные вам атрибуты, выполнить команду generate с каждым требуемым атрибутом и его типом, а затем выполнить команду rake db: migrate?

Мне бы понравились некоторые более проверенные схемы на эту тему, потому что пока что путь, который я видел, кажется слишком пустым.

Ответы [ 3 ]

3 голосов
/ 30 января 2012

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

Вы можете сделать gem install annotate_models, если хотите получить комментарии в классе вашей модели с именами и типами атрибутов.

См. Здесь пример: https://github.com/ctran/annotate_models

1 голос
/ 30 января 2012

Обычно, когда вы разрабатываете какое-либо веб-приложение на основе базы данных, вы заранее знаете структуру базы данных (имя таблиц, имя столбцов в этих таблицах и связи между различными таблицами).

Rails, как уже упоминалось Мааронс в своем ответе использует шаблон Active Record .Ваши модели - это классы, которые представляют таблицу в вашей базе данных, экземпляр класса вашей модели - строку в этой таблице, а различные атрибуты объекта представляют значения в разных столбцах одной и той же таблицы.

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

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

Вы можете воспользоваться первым подходом к коду, создав класс без запуска генератора моделей rails в app/models/, но не наследуя его от ActiveRecord::Base.По мере продвижения вперед в разработке вы можете создавать миграции с помощью $ rails generate migration MigrationName, создавая таблицу и добавляя столбцы, используя [add_column][2], к этой таблице по мере необходимости.После того как вы создали таблицу для этой модели, вам придется наследовать эту модель от ActiveRecord::Base, чтобы вы могли получить всю магию Rails в своем приложении.

1 голос
/ 30 января 2012

Rails использует шаблон активной записи для моделей, что в основном означает, что объект модели автоматически сопоставит каждый столбец БД с атрибутом, поэтому вам не нужно указывать все атрибуты в модели. Это особенность, но я согласен, что она не может быть идеальной для всех. Если вы используете Rails 3, должно быть легко использовать другой ORM по вашему выбору, если подход ActiveRecord вам не подходит. Здесь - некоторые альтернативные ORM, которые вы можете использовать.

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