我想将下面的逻辑移到其他地方,这样我就可以在我的控制器和rake任务中使用它。
我的控制器操作看起来像这样:
ProductRevisionId
基本上,重点是我必须遍历关联,以便JSON中包含所有数据。
如何将此逻辑移动到其他位置,以便我可以在我的控制器操作中以及在rake任务中调用它。
答案 0 :(得分:1)
将代码解压缩到presenter或使用ActiveModel::Serializers,以便控制器和Rake任务调用此新类。
class UserPresenter
def initialize(user, account, sales)
@user = user
@account = account
@sales = sales
end
def as_json(*)
{
"user": @user,
"account": @account.map do |a|
JSON.parse(a.to_json(include: :addresses))
end, # or @account.as_json(include: :addresses))
"sales": @sales.map do |s|
JSON.parse(s.to_json(include: :products))
end # or @sales.as_json(include: :products))
}
end
end
# In the controller
render json: UserPresenter.new(@user, @account, @sales)