我有非常具体的任务。我需要一个可以根据变量扩展自己的模型。在我的例子中,它的模型获取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并做一些事情。我正在寻找一种更好的方式,看起来太复杂和不可靠。任何建议,教程或建议将不胜感激。