2017-06-14 70 views
0

我在組織Rails項目及其有關文件夾結構和約定的模型方面遇到了一些麻煩,我似乎無法在任何地方找到與此相關的任何內容。在Rails中組織一個名稱空間和相關模型

比方說,我想創建一個Cinema模型,Cinema有許多Cinema::Location模型和每個Cinema::Location有很多Cinema::Location::Movie場次,對每一個電影可以有一個Cinema::Location::Movie::Review,更何況每個評論可能有意見頂部...

我的文件夾結構會是這個樣子:

  • 應用程序/模型/ cinema.rb
  • 應用程序/模型/影院/ location.rb
  • 應用程序/模型/影院/位置/ movie.rb
  • 應用程序/模型/影院/位置/電影/ review.rb
  • 應用程序/模型/影院/位置/電影/審查/ comment.rb

這是一個有組織的解決方案,但同時它看起來不太好,如果我們談論表格(cinema_location_movie_review_comment_replies),情況會更糟糕。

有一件事我可以做的是組織模式是這樣的:Cinema::Location的位置和Location::Movie電影,Movie::Review的評論等

的文件夾結構是這樣的:

  • 應用/models/cinema.rb
  • 應用程序/模型/影院/ location.rb
  • 應用程序/模型/位置/ movie.rb

這樣可以解決表名(location_moviemovie_review)的問題。

是否有關於多級命名空間模型的約定?

回答

1

你問自己爲什麼要嵌套模型嗎?在我看來,你試圖將命名空間用於執行邏輯,這更好地留給組織。

如果檢查出ActiveRecord associations docs,你會發現,在第一個例子中,BookAuthor是頂級車型 - 有沒有Book::Author或類似的東西提。有你的約定。

隨着您的應用程序變得越來越大,越來越複雜,可能會出現適用於模型命名空間的情況(比如,針對不同用戶類型的資源),但我認爲它不在這裏。

+0

我該如何處理僅用於引用其他模型的模型?例如,只有'Cinema'可以有許多'Location'模型,'Cinema'可以通過'Location'有很多'Movies'? – user3376486

+0

我想我只是在這裏回答自己。謝謝! – user3376486

+0

Yup :-)另外,在我看來''Location'可能'has_and_belongs_to_many:movies',因爲你可能想要一個多對多的關係(即在'location'有很多'movies',但是每一個「電影」顯示在許多「地點」)。取決於你在數據模型中要做什麼,但似乎你在正確的軌道上。 – jmschles

相關問題