2016-11-08 83 views
0

我在我的Rails 5應用程序中使用命名空間來嘗試保持資源組織。Rails 5 - 命名空間模型

我一直使用命令行生成資源,將命名空間文件夾添加到generate命令。

這使得在該命名空間中的文件被保存在主文件夾中的文件夾模式文件夾。

因爲我已經在讀別人的暗示命名空間模型的帖子是不是一個好主意。

什麼,我現在有一個例子是:

class Stance::Assessment < ApplicationRecord 

這似乎好了工作至今。

命名空間模型有什麼問題?

如果這是一個問題,這是否意味着我不能將我的模型組織到文件夾組中,還是這意味着模型類不需要命名爲「Stance ::」?

+1

你可以鏈接那些抨擊namespaced模型?如果你遵循慣例,我無法找到一個引人注目的論據。將這些文件分組到一個名爲'stance'的文件夾中,用'Stance'或使用模塊(我更喜歡)來預先安排這個類。 –

+0

@AlexandreAngelim https://dhampik.com/blog/rails-admin-scaffold – Mel

回答

2

「命名空間」模型涉及一定的複雜成本。 Ruby實際上並沒有真正的命名空間。它具有提供封裝的模塊。

Rails和ActiveRecord是圍繞放置在Main對象(全局對象)中的應用程序代碼而設計的。雖然這可能看起來是一種不好的做法,但它非常簡單,並且與約定優於配置方法一致。它還允許更簡單的自動加載方案,並避免將每個文件嵌套到其他文件夾中的需要。

命名空間雖然具有很大的組織優點,但可以避免衝突。但也有在背面上的一些小疼痛:

  • 表前綴,具有類似於my_app_projects_tasks生成的表名實在太不方便了,當你需要編寫一個自定義的加入。
  • 您需要覆蓋ActiveModel::Naming,以便在使用多態路由幫助程序時不尋找像my_app_projects_tasks_path這樣的路徑。
  • 您需要在創建關聯時明確設置class_name選項或覆蓋ActiveRecord如何解析常量名稱。
+0

你可以給我一個關於多態路線助手點嗎?我試圖弄清楚現在http://stackoverflow.com/questions/40518887/rails-5-using-polymorphic-associations-rendering-the-views – Mel

相關問題