0

というわけで、app/models のモデルのリストが長くなってきたので、整理したいと思います。

しかし、フォルダー/サブクラスのRuby/Railsの命名規則は知っています。

すなわち

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 に答える