0

所以,我在 app/models 中的模型列表有点长,我想整理一下。

但是,我知道 Ruby/Rails 对文件夹/子类的命名约定。

IE

Object::MyObject::SubObject

看起来像这样:

object.rb
object/
-- my_object.rb
-- my_object/
-- -- sub_object.rb

至少在我看来

但是,我想做的是对彼此相关或交互很多的类进行分组。

这是我想做的(例如,这些不是我的实际课程):

app/models/
-- library_item.rb     # LibraryItem < ActiveRecord::Base
-- library_items/
-- -- book.rb          # Book < LibraryItem
-- -- book/
-- -- -- page.rb       # Page < ActiveRecord::Base
-- -- -- cover.rb      # Cover < ActiveRecord::Base
-- -- magazine.rb      # Magazine < LibraryItem
-- -- magazine/
-- -- -- shiny_page.rb # ShinyPage < ActiveRecord::Base

这可能吗?我知道 Java 是这样,但是 Ruby 和 Rails 有一种非常具体的做事方式,而且我还没有读过很多关于大型项目组织的文章。

4

1 回答 1

3

为了让 Rails 自动找到这些模型,类名需要与文件路径匹配,例如:

class LibraryItem::Book::Page < ActiveRecord::Base

就我个人而言,我更喜欢保持我的模型层次结构大部分是平坦的,这样我就可以只输入Page而不是LibraryItem::Book::Page. 您可以通过显式加载模型(可能在初始化程序中)来完成这两件事——文件层次结构和短模型名称。

于 2012-06-12T15:46:04.167 回答