序列化ActiveRecord :: Relation对象以进行存储

时间:2013-06-17 13:21:32

标签: ruby-on-rails activerecord serialization

我正在尝试为我的应用构建报告功能,每个报告本质上都是一个带有名称的活动记录关系/查询。我需要序列化这些关系,以便我可以保留它们并在以后获取它们。这可能吗?

否则我不得不求助于将关系生成的sql序列化,然后使用它来查询。

1 个答案:

答案 0 :(得分:2)

我不确定这是一个很好的解决方案,但您可以将AREL保存为字符串,然后对其进行评估:

例如,您要保存Bid.first

class Report < ActiveRecord::Base
  attr_accessible :arel

  def arel_eval
    args = @arel.split('.')
    model = args.shift.constantize
    args.inject(model) {|mod, met| mod.send(:#{met})}
  end
end

report = Report.new(arel: "Bid.first")    
report.arel_eval