我有一個模型:「事件」,它有一個控制器:「event_controller」Ruby on Rails的:什麼是慣例(?有一個),用於創建模型實例編程
的event_controller處理以下路線:事件/:ID/complete_event
在控制器中,我需要觸發建立在系統中的其他幾個模型對象,這是計算,而不是通過網絡的形式輸入。
在這種情況下,模型創建有:
- 得分(其belongs_to的:用戶和事件)
- 統計(其belongs_to的:事件)
- 站立(其中belongs_to:用戶 |並基於新得分/統計對象)
,這是什麼類型的模型創造了Ruby on Rails的約定?
對於event_controller可以創建這些(有點無關的)模型對象嗎?
,或者
如若event_controller呼叫到score_controller,stats_controller和standing_controller?
第二個選項,我擔心它不能在鏈中分配2-3個路由來在其相應的控制器中創建所有對象,但這是慣例。
在最後,它是理想的,將用戶重定向回show_event視圖,它會顯示事件及其相關分數和統計對象。
代碼爲event_controller方法:complete_event
def complete_event
event = Event.find(params[:id])
if event.in_progress?
event.complete!
end
# 1. create score for each user in event.users
# 2. create stats for the event
# 3. update the overall standings for each score (per user)
redirect_to event
end
正如你所看到的,事件是不是被創造的這個動作,而事件狀態更新爲「完整的」,這是觸發創建關聯的記錄。上述
註釋行代表什麼,我需要做的事件後完成;我只是不知道這是我繼續前進,直接創建對象。
E.g.要創建得分我將不得不計算大量啓動事件,但使用很多模型來獲取所有的相關數據來創建它的數據。
是,控制器可以創造任何他們想要的車型。沒有什麼阻止他們這樣做。他們不能直接調用其他控制器。只能間接地通過'redirect_to'或其他東西。我建議你閱讀更多的導軌指南/教程。顯然,這些概念在你的腦海中仍然有點模糊。 –
我認爲這不應該在控制器中完成。相反,你的控制器可以調用一個Builder,它可以在一個方法中創建所有相關和相關的對象或者您的事件模型可以在創建時自己生成所有需要的耦合對象。或者,當您第一次訪問它們時,它可能會創建它們。 – spickermann
@SergioTulentsev我已經研究過Rails指南並且一直在關注幾個教程;但沒有一個真正強調或解決這個特定的情況。如果您有任何有用的參考鏈接。 – dannbeau