class Transmutable::Base
Attributes
model[RW]
Public Class Methods
add_to_transmute(*methods)
click to toggle source
# File lib/transmutable/base.rb, line 5 def self.add_to_transmute(*methods) define_method :transmute_addons do methods end end
new(model)
click to toggle source
# File lib/transmutable/base.rb, line 23 def initialize(model) @model = model end
remove_from_transmute(*methods)
click to toggle source
# File lib/transmutable/base.rb, line 11 def self.remove_from_transmute(*methods) define_method :transmute_skips do methods end end
serialize_attrs(*methods)
click to toggle source
# File lib/transmutable/base.rb, line 17 def self.serialize_attrs(*methods) define_method :default_attrs do methods end end
Public Instance Methods
transmute()
click to toggle source
# File lib/transmutable/base.rb, line 27 def transmute Hash[serialize_methods.map { |attribute| [attribute, model.send(attribute)] }] end
Private Instance Methods
default_attrs()
click to toggle source
# File lib/transmutable/base.rb, line 44 def default_attrs # Guard clause for Rails-esque models return model.attributes.keys.map(&:to_sym) if model.respond_to? :attributes model.instance_variables .reject { |var| model.instance_variable_get(var).respond_to? :serialize } .map { |var| var.to_s.gsub('@', '').to_sym } end
serialize_methods()
click to toggle source
# File lib/transmutable/base.rb, line 32 def serialize_methods default_attrs - transmute_skips + transmute_addons end
transmute_addons()
click to toggle source
# File lib/transmutable/base.rb, line 36 def transmute_addons [] end
transmute_skips()
click to toggle source
# File lib/transmutable/base.rb, line 40 def transmute_skips [] end