Как высушить модели в Rails? - PullRequest
2 голосов
/ 16 марта 2012

У меня есть несколько моделей, которые используют один и тот же код. Где правильное место для размещения общего кода для моделей в Rails 3? Я уже думал об использовании инициализаторов, однако я просто не твердо придерживаюсь лучшей практики здесь.

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

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

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

1 голос
/ 17 марта 2012

IMO lib / действительно для библиотек, внешних по отношению к вашему приложению - почти как вендор /. Он также не загружается автоматически при разработке.

Вся логика приложения должна быть в app /. Я иногда использую приложение / проблемы для совместно используемой модели / кода контроллера - или почему даже не приложение / модели / общие /?

Как говорит Берлингтон, также стоит пересмотреть вопрос о том, является ли модуль правильным выбором. Подумайте, какие функции вы хотите внедрить, и подумайте, подходит ли отдельный класс.

1 голос
/ 16 марта 2012

Вы можете поместить подобный код в модули, а затем включить его в свои модели. Модули могут быть размещены, например, в lib/models/.

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