Sha256: 4e281096e7b1bea57c0e6d2bf283499f4cf51d43337f72c21611962c3cce63a8
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
module StateFu module Persistence DEFAULT_FIELD_NAME_SUFFIX = '_field' def self.prepare_class( klass ) return if ( klass.instance_methods + klass.private_methods + klass.protected_methods ).map(&:to_sym).include?( :method_missing_before_state_fu ) alias_method :method_missing_before_state_fu, :method_missing klass.class_eval do def method_missing( method_name, *args, &block ) args.unshift method_name if @state_fu_initialized method_missing_before_state_fu( *args, &block ) else state_fu! if respond_to?(method_name) send( *args, &block ) else method_missing_before_state_fu( *args, &block ) end end end # method_missing end # class_eval end # prepare_class def self.active_record_column?( klass, field_name ) Object.const_defined?("ActiveRecord") && ::ActiveRecord.const_defined?("Base") && klass.ancestors.include?( ::ActiveRecord::Base ) && klass.columns.map(&:name).include?( field_name.to_s ) end def self.for( binding, field_name ) if active_record_column?( binding.object.class, field_name ) self::ActiveRecord.new( binding, field_name ) else self::Attribute.new( binding, field_name ) end end def self.prepare_field( klass, field_name ) if active_record_column?( klass, field_name ) self::ActiveRecord.prepare_field( klass, field_name ) else self::Attribute.prepare_field( klass, field_name ) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
davidlee-state-fu-0.0.1 | lib/state_fu/persistence.rb |
davidlee-state-fu-0.0.2 | lib/state_fu/persistence.rb |
davidlee-state-fu-0.2.0 | lib/state_fu/persistence.rb |