我有一个模型:'事件'并且它有一个控制器:' event_controller '
event_controller 处理以下路线: events /:id / complete_event
在控制器中,我需要在系统中触发创建其他几个模型对象,这些对象是计算出来的,不是通过网络表单输入的。
在这种情况下,要创建的模型是:
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。要创建得分,我必须计算从事件开始的大量数据,但使用许多模型来获取所有相关数据来创建它。