Ruby on Rails:以编程方式创建模型实例的约定是什么(有一个?)

时间:2016-08-13 13:11:24

标签: ruby-on-rails ruby

我有一个模型:'事件'并且它有一个控制器:' event_controller '

event_controller 处理以下路线: events /:id / complete_event

在控制器中,我需要在系统中触发创建其他几个模型对象,这些对象是计算出来的,不是通过网络表单输入的。

在这种情况下,要创建的模型是:

  1. 得分(属于:用户事件
  2. 统计信息(属于:事件
  3. 站立(属于:用户 |并且基于新的得分 / 统计对象)< / LI>

    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。要创建得分,我必须计算从事件开始的大量数据,但使用许多模型来获取所有相关数据来创建它。

0 个答案:

没有答案