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

StackOverflow https://stackoverflow.com/questions/601768

Вопрос

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

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

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

Решение

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

Другие советы

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

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

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

has_many :addresses, :class_name => "UserAddress"

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top