Подтвердить что ты не робот

Модели с именами в Rails: какое состояние союза?

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

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

  • сначала, хорошо ли идти?
  • имя таблицы, какое правило следовать?
  • как объявить их с наименьшей многословностью? как назвать столбцы внешнего ключа?
  • автоматически требует, работает ли, если вы помещаете файлы модели в поддиремент, соответствующий пространству имен? или, как назвать и где разместить файлы?
  • генератор модели успешно и правильно обрабатывает пространства имен?
  • как насчет генератора эшафотов, который включает контроллеры?
  • любые несовместимости /quirkinesses, о которых следует знать?
4b9b3361

Ответ 1

Лучшая запись, которую я видел в этом выпуске, - Strictly Untyped. Насколько мне известно, 2.3 не разрешило никаких проблем, а это значит, что они по-прежнему ненадежны.

Ответ 2

Недавно у нас были большие дебаты об этом внутри нашей компании. Я думаю, что в конце дня мы поняли, что если вы не можете хранить таблицы имен внутри базы данных, бессмысленно пространство имен для моделей. Мы установили префикс наших моделей (User, UserAddress, UserEmailAddresses) и помещаем их в каталог пользователей, а затем используя:

config.load_paths << "#{RAILS_ROOT}/app/models/users"

чтобы загрузить модели. Чтобы контролировать многословие в наших моделях, мы делаем это часто:

has_many :addresses, :class_name => "UserAddress"

При генерации мы создаем его, как если бы не было пространства имен (script/generate model UserAddress), а затем вручную скопировали его в каталог пользователя.

Shrug. Я думаю, в конце концов, все это действительно дает вам более чистую структуру каталогов, что на самом деле больше проблем для пользователя VIM, подобного мне, но приятного для TextMaters.

Ответ 3

Я бы все равно держался подальше от него. Все, что было получено (что я не уверен, что это было бы честно), безусловно, было бы потеряно, если учесть сложности и потерю краткости и ясности в вашем коде.

Мое последнее приложение имеет 87 ресурсов и включает в себя административные функции повсюду. Я не вижу необходимости в пространстве имен, IMHO.