lib/tracker_api/resources/base.rb in tracker_api-0.2.9 vs lib/tracker_api/resources/base.rb in tracker_api-0.2.10

- old
+ new

@@ -1,70 +1,15 @@ require 'virtus' -require 'active_support/concern' -require 'active_model' module TrackerApi module Resources module Base - extend ActiveSupport::Concern + def self.included(base) + base.class_eval do + include Virtus.model + include Equalizer.new(:id) - include ActiveModel::Model - include ActiveModel::Dirty - - included do - include Virtus.model - include OverrideAttributes - - attribute :id, Integer - - def initialize(attrs) - super - - # always reset dirty tracking on initialize - clear_changes_information - end - - private - - # @return [Hash] key value pairs for just the changed attributes with their new values. - def just_changes - # @see changes in ActiveModel::Dirty in active_model/dirty.rb - # { attr => [original value, new value] } - changes.inject({}) do |h, (k, v)| - h[k] = v[1]; h; - end - end - end - - module OverrideAttributes - extend ActiveSupport::Concern - - module ClassMethods - def attribute(name, type, options = {}) - define_attribute_methods name - - attribute = super - create_writer_with_dirty_tracking(name) - attribute - end - - private - - def create_writer_with_dirty_tracking(name) - method_str = <<-RUBY - def #{name}=(value) - prev_value = #{name} - new_value = value - if prev_value != new_value - #{name}_will_change! - new_value = super(value) - end - new_value - end - RUBY - - class_eval method_str, __FILE__, __LINE__ + 1 - end + attribute :id, Integer end end end end end