Как именовать пространство моделей \ классов? - PullRequest
2 голосов
/ 28 октября 2011

Я использую Ruby on Rails 3.1.1, и я хотел бы "(пере) назвать" \ "использовать" пространство имен файлов модели и связанных классов "a la Ruby on Rails Way", сохраняя текущую базу данныхимена таблиц.То есть у меня есть следующая файловая система:

- app/models/article.rb
- app/models/articles.rb
- app/models/articles/comment.rb
- app/models/articles/category.rb
- app/models/articles/...

Имена связанных таблиц базы данных соответственно:

# Note: Since the 'app/models/articles.rb' file is related to a module (read
# below for more information) it has not a related database table
- articles
- articles_comments
- articles_categories
- ...

В моем файле app/models/articles.rb:

module Articles
  def self.table_name_prefix
    'articles_'
  end
end

Для istance, в app/models/articles/comment.rb у меня есть

class Articles::Comment < ActiveRecord::Base
  ...
end

Это правильный путь для "имени" \ "использования" классов с пространством имен?


Возможно, «правильный» способ сделать это - использовать пространство имен с единичными именами (например: использовать class Article::Comment ... end вместо class Articles::Comment ... end) и, для организации файлов, использовать *Каталог 1026 * вместо /articles/.В этом случае файловая система должна быть:

# Note: the 'app/models/articles.rb', maybe, should not be present
- app/models/article.rb
- app/models/article/comment.rb
- app/models/article/category.rb
- app/models/article/...

Если да, как это должно работать для app/models/articles.rb файла (больше не присутствует в последнем примере) inчтобы префикс имени таблицы базы данных был articles?

1 Ответ

0 голосов
/ 28 октября 2011

Путь рельсов состоит в том, чтобы этого не делать.

Вы будете использовать модели и контроллеры с пространством имен только для больших и больших логических разделений.Например, если у вас есть модели Admin, которые применимы только во время администрирования, вы можете иметь:

app/admin/report.rb
app/admin/dashboard.rb

И вы будете ссылаться на них как Admin :: Report

Но их нет "Объект «Администратор» - в вашем примере у вас есть объект «Статья» ... Я бы не стал группировать ваши файлы таким образом ... Храните их все в глобальном пространстве имен приложения.

...