Почему я не вижу больше конструкторов в моделях рельсов - PullRequest
4 голосов
/ 16 ноября 2010

Кажется, что я редко, если вообще когда-либо, вижу или использую конструктор ruby ​​в модели rails.

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

Нет ли хороших вариантов использования конструктора в модели?

Ответы [ 2 ]

4 голосов
/ 16 ноября 2010

В конструкторе нет ничего плохого, просто они вряд ли когда-нибудь понадобятся.Основной причиной для конструктора будет установка значений по умолчанию.Задание атрибутов по умолчанию легко выполняется на уровне базы данных

add_column :users, :admin, :boolean, :default => false

Основное, что может потребоваться, - это существование / создание модели ассоциации, это можно сделать либо в конструкторе / инициализаторе,но более распространенным является использование перехватчиков rails для установки before_create :populate_children, :ensure_parent_exists (где populate_children, и sure_parent_exists - методы закрытой модели) или что-то в этом роде.Этот подход означает, что любую логику инициализации можно разделить на логические методы (например, отдельные методы для каждого бита инициализации), а некоторые можно дополнительно вызывать и в другое время after_save :ensure_parent_exists, и, таким образом, обеспечивает большую гибкость

1 голос
/ 16 ноября 2010

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

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