基于变量的轨道模型中的ruby动态混合

时间:2014-09-24 18:58:13

标签: ruby-on-rails ruby json mixins

我有非常具体的任务。我需要一个可以根据变量扩展自己的模型。在我的例子中,它的模型获取json并保存其中的一部分,但它可能比那更复杂(例如xml到json的转换)。

class Feed < ActiveRecord::Base
    require 'open-uri'

    serialize :data, JSON

    def downlaod!
        # self.url = "http://jsonview.com/example.json"
        result = JSON.parse(open(url).read)

        # self.mixin = "api_v_3"
        if mixin.present?
            self.class.send :include, Feed.const_get(mixin.camelize)
            store_data(result)
        end

        save!
    end
end

和我的mixin:

module ApiV3
    extend ActiveSupport::Concern

    def store_data(data)
        self.data = data['anobject']
        self.class.send :undef_method, :store_data
    end
end

所以当我打电话时:

feed.download!

它包括mixin并做一些事情。我正在寻找一种更好的方式,看起来太复杂和不可靠。任何建议,教程或建议将不胜感激。

0 个答案:

没有答案