在服务对象中覆盖as_json

时间:2013-10-12 14:44:02

标签: ruby-on-rails ruby-on-rails-4

对此非常陌生,所以提前道歉。

我有一些接受json数据的jQuery。我的控制器循环遍历一组发票,并将日期格式化为我想要的样式,因为日期字段例如是时间戳。我意识到这对于控制器来说太过艰苦了,所以我一直指向超越as_json并将逻辑转移到模型上。

我是模型中逻辑的忠实粉丝,但我使用服务对象(不是模型)与API进行通信(我从中获取发票)我不确定如何最好地恢复编写以下代码以使用as_json

@invoices.each do |invoice|
  invoice.date = Time.at(invoice.date).strftime("%d/%m/%Y")
end
render json: @invoices

那么如何让我的服务对象来完成繁重的工作呢?

1 个答案:

答案 0 :(得分:0)

由于您喜欢使用服务对象(实际上它比检测您的数据库模型对象好得多),我建议您使用rails serializers。基本上,您描述的对象将是您在JSON中的模型表示。您还可以查看有关这些内容的railscast:

http://railscasts.com/episodes/409-active-model-serializers