module Virtualize::ClassMethods
Public Instance Methods
set_virtual_attributes(*args)
click to toggle source
# File lib/virtualize.rb, line 7 def set_virtual_attributes(*args) options = args.last.is_a?(Hash) ? args.pop : {} options = { on: 'data' }.merge(options) column_name = options[:on] attributes = args @virtual_column = column_name @virtual_attributes = attributes serialize column_name define_method 'virtual_data' do hash = send(column_name) hash.is_a?(Hash) ? hash : {} end attributes.each do |attr| define_method(attr) do virtual_data[attr] end define_method("#{attr}=") do |value| hash = self.virtual_data.merge({ :"#{attr}" => value }) self.send("#{column_name}=", hash) end end end