Изящный способ структурировать модели в подпапки, не создавая подмодули

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

Например.

app/models/blog/post.rb
app/models/blog/comment.rb
app/models/user.rb

так, чтобы:

app/models/blog/post.rb

class Post < ActiveRecord
end

и нет

class Blog::Post < ActiveRecord
end
61
задан Flimzy 19 September 2019 в 15:17
поделиться

3 ответа

Нам нужно было это сделать, и есть очень простой способ.

переместите ваши модели во вложенные папки, а затем скажите rails загружать файлы из всех вложенных папок в вашей среде. rb файл:

config.load_paths += Dir["#{RAILS_ROOT}/app/models/*"].find_all { |f| File.stat(f).directory? }

Пространство имен не требуется, и модели могут упоминаться как обычные в вашем приложении

12
ответ дан 24 November 2019 в 17:18
поделиться

Пока я не найду лучшее решение, я создал init.rb в папке app / models:

app / models / init .rb

%w[blog].each do |folder|
  path = [File.dirname(__FILE__), folder, "*.rb"].join('/')
  Dir[path].each {|file| require file }  
end

Служит для этой цели до сих пор.

0
ответ дан 24 November 2019 в 17:18
поделиться

Возможно, вы могли бы взглянуть на RailsEngines. Это не совсем то, что вам нужно, но может дать вам несколько идей.

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

1
ответ дан 24 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: