在我創建的Rails應用程序中,我在控制器中有一些代碼,我想知道它是否在適當的位置。代碼非常不重要,它將ID存儲在數組中以顯示「最近查看的」頁面。這大概有三行代碼,但我正在考慮未來,如果此功能擴展,該怎麼辦?我不希望我的控制器臃腫。我應該在哪裏存儲會話代碼在Rails應用程序中?
我可以創建一個模塊,但在這種情況下,我應該在哪裏存儲文件? 控制器是否正在進行會話管理? 關於我的代碼組織的任何建議?
謝謝
在我創建的Rails應用程序中,我在控制器中有一些代碼,我想知道它是否在適當的位置。代碼非常不重要,它將ID存儲在數組中以顯示「最近查看的」頁面。這大概有三行代碼,但我正在考慮未來,如果此功能擴展,該怎麼辦?我不希望我的控制器臃腫。我應該在哪裏存儲會話代碼在Rails應用程序中?
我可以創建一個模塊,但在這種情況下,我應該在哪裏存儲文件? 控制器是否正在進行會話管理? 關於我的代碼組織的任何建議?
謝謝
如果它是特定於控制器,請將它保存在控制器中。
如果它適用於所有控制器,它將進入ApplicationController。如果它由某些控制器共享,而不是其他控制器,則從繼承自ApplicationController的控制器繼承,或使用include/extend或make a module that extendsActiveSupport::Concern
(這是Rails在內部相當普遍使用的)。
而且,最好把一切都在app/controllers
或一些子目錄,次子目錄等Rails的自動加載依賴的道路上,以匹配與模塊的命名空間,所以A::B::C
所屬app/controllers/a/b/c.rb
。不要讓它像Java一樣深入,只需要保持組織的目錄/模塊的數量即可。
注意:儘管控制器在自己的模塊中沒有問題,但根據我的經驗,您的模型應該保留在根目錄中,如app/models
,否則您將遇到問題。
如果你能幫到的話,我也會避免在會話中存儲太多。代之以存儲在數據庫中(或長壽命的cookie,如果它是瀏覽器環境特定的)。例如,如果某人註銷並且他們正在查看一條記錄,則他們可能想要稍後重新登錄並且有一個包含該記錄鏈接的列表。
BTW-你不問,可能已經有在會話中存儲最近訪問過的網頁代碼,但這裏有類似的問題/回答:
非常棒的答案,謝謝!這是我在StackOverflow上的第一個問題,你給了我很多好的Rails建議。 – manderson 2013-02-18 20:23:26
不客氣! – 2013-02-18 20:26:03
如果你粘貼你正在談論的代碼,這可能會讓人們更容易給你一個很好的迴應。 – rossta 2013-02-18 19:53:22
我曾考慮過這個問題,但我更關心代碼/文件組織的概念,並且不希望人們在語法上陷入困境。感謝您的迴應!這是我在StackOverflow上的第一個問題:) – manderson 2013-02-18 20:22:37