Недавно у меня была дискуссия с моим другом, который также является разработчиком RoR. Мы спорили о том, как управлять моделями Rails. Лично мне нравится оставлять в пространстве имен по умолчанию только корневые модели (например, User, Article, Bill и т. Д.), А зависимые модели идут в модуль (например, User :: Profile, User :: Activity) с именем корня с которыми они связаны.Модели смены имен в приложении Rails
С другой стороны, я видел много проектов, которые имели 100 моделей в пространстве имен по умолчанию, называемых user_profile, user_activity и т. Д. Судя по разработке Java (Spring), сообщество java имеет тенденцию организовывать класс в пакетах и логически их группировать, что я считаю очень привлекательным.
Итак, вопрос в том, есть ли недостаток в группировании моделей в модулях (кроме дополнительных: class_name в определении отношения) и существуют ли какие-либо конкретные причины, по которым люди обычно этого не делают?
Я не помню, когда я в последний раз открывал базу данных. С рубином это естественно, чтобы абстрагировать такие вещи. Насколько я помню, Foo :: Bar создаст таблицу «foo_bar». Единственный недостаток заключается в том, что вам необходимо указать: class_name => Foo :: Bar в ассоциациях. Интересно, как приложение rails должно обрабатывать сложное приложение, если оно поддерживает сохранение всех моделей в одном каталоге. Я имею в виду, что если приложение слишком сильно растет, это означает, что пространство имен требуется для частичного рефакторинга или просто переключается на Java?) – FreeCandies
Обычно я использую префикс как своего рода пространство имен, поэтому вы создаете такие вещи, как UserProfile и UserActivity вместо профиля или активности. Это приводит к естественной группировке в листинге. Редко можно увидеть приложение с более 500 моделями, которые значительно выиграли бы от пространства имен. Сложно сложно. Иногда лучше быть честным о том, насколько сложным является ваше приложение, чем пытаться притворяться, что на самом деле это просто, похоронив сложность и просто усложняя поиск вещей. – tadman