Rails: лучшая практика для расположения классов зависимости модели? - PullRequest
4 голосов
/ 04 февраля 2009

У меня есть приложение rails, продвигающееся довольно хорошо, но тот факт, что я делаю это сам, означает, что какой-то бедняга в конце концов увидит это и скажет: «Что, черт возьми, вы думали? здесь?!?! "

Где эта бедная, извиняющаяся душа ожидает увидеть серию классов, которые не используются ничем, кроме одного модельного класса? Очевидно, я мог бы забросить его в the_model.rb вместе с классом TheModel, но это может выйти за рамки запланированных двух классов ...

Я думал о lib, но он не должен загромождать всеобщее представление о мире ....

Спасибо.

Спасибо моему предшественнику.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2009

Оставьте их в the_model.rb, пока они вам не понадобятся в нескольких местах. Если вы излишне рефакторинге, вы не делаете простейшую вещь, которая могла бы сработать. Тебе это не понадобится .

На этом этапе общая схема заключается в создании каталога для «проблем». Для получения дополнительной информации см. это сообщение в блоге Джамиса Бака или этого сообщения Питера Марклунда

0 голосов
/ 01 июня 2009

В общем: следуйте соглашениям об именах Rails при переводе имен классов в местоположения файловой системы. (то есть: сохранить класс FooHelper::Bar в foo_helper/bar.rb)

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

Используйте модули и пространства имен классов в ваших интересах. Если у вас есть вспомогательный класс, который используется только вашей моделью (и зависит от нее), поместите их в пространство имен класса модели:

class TheModel::HelperClass
end

расположение в файловой системе будет app/models/the_model/helper_class.rb

И то, что не зависит от вашей модели, возможно, все еще может быть пространством имен

module Bar
  class Foo
  end
end

живет в bar/foo.rb, конечно

Вы, вероятно, не должны бояться помещать вещи, которые не являются моделями, в lib - это то, что этот каталог для

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

...