我有一个模型:“事件”,它有一个控制器:“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