首页 > 解决方案 > ActiveModel 对转换的责任

问题描述

我有一个从外部数据源捕获信息的 Rails 应用程序。这些信息被收集到一个raw_data属性中,保存并安排一个负责进行处理的 ActiveJob。

capture = Capture.create(raw_data: data)
ProcessCaptureJob.perform_later(capture)

数据处理稍后在离线过程中完成,问题是:谁负责进行转换?

该模型?

def convert
  update(attr1: raw_data['attr1a'] + raw_data['attr1b']
end

还是工作?

def perform(capture)
  capture.attr1 = capture.raw_data['attr1a'] + capture.raw_data['attr1b']
  capture.save
end

ActiveModel 背后的想法是模型负责其所有与数据相关的用例,但这是与数据相关的问题,还是将责任留给外部工作更好?

标签: ruby-on-railsrubymodel-view-controlleractiverecord

解决方案


推荐阅读