共享控制器我有兩個型號:Rails的:在兩個模型
學生 課堂
他們兩人有確實的同樣的事情一個動作:它顯示日常活動的報告。即:
/students/1
/classrooms/1
爲相關模型抓取活動並將其顯示在頁面上。
爲了解決這個問題,我創建了一個ReportsController
,它提取了構建報告的所有常見邏輯。
如果我離開的路線是這樣的:
/students/1/report
/classrooms/1/report
這樣我就可以有ReportsController#show
行動查找params
爲:student_id
或:classroom_id
,以確定哪些模型類型它在處理(用於查詢數據庫的目的,渲染正確的視圖)。
但我寧願網址,更清潔,所以我也改變了我的routes.rb
文件傳遞show
行動爲這些車型的reports#show
控制器動作:
resources :students, :classrooms do
member do
get :show, to: 'reports#show'
end
end
這工作,但我可以不再取決於params
來確定要使用哪個模型以及要呈現哪個視圖。
問題:我應該爲模型解析request.fullpath
嗎?或者是否有更好的方法讓共享控制器瞭解它正在使用的模型?
你不能把所有的邏輯模型,並保持2只是調用模型方法非常簡單的控制器操作? – AbM
@abm我該如何避免在學生和教室模型中添加重複的邏輯?邏輯完全相同:他們使用classroom_id = foo或student_id = bar查詢事件表中的事件。 –
如果您正在查詢'events'表,那麼您的邏輯應該放在'Event'模型中。 – AbM