module RedisField::ActiveRecord::ClassMethods

Public Instance Methods

has_redis_field(*field_names)
Alias for: has_redis_fields
has_redis_fields(*field_names) click to toggle source
# File lib/redis_field/active_record/class_methods.rb, line 11
def has_redis_fields(*field_names)
  redis_fields.add(*field_names)

  init_redis_field_callbacks
  init_redis_field_accessors
end
Also aliased as: has_redis_field
redis_fields() click to toggle source
# File lib/redis_field/active_record/class_methods.rb, line 7
def redis_fields
  @redis_fields ||= DirtyFieldSet.new
end

Private Instance Methods

init_redis_field_accessors() click to toggle source
# File lib/redis_field/active_record/class_methods.rb, line 31
def init_redis_field_accessors
  redis_fields.changes.each do |field_name|
    method_name = :"#{field_name}_redis_value"

    class_eval do 
      attr_accessor method_name
    end

    alias_method :"#{field_name}", method_name
    alias_method :"#{field_name}=", :"#{method_name}="
  end
end
init_redis_field_callbacks() click to toggle source
# File lib/redis_field/active_record/class_methods.rb, line 21
def init_redis_field_callbacks
  unless @_redis_fields_callbacks_initted
    class_eval do
      after_save       :sync_redis_fields!
      after_initialize :get_redis_fields
    end
    @_redis_fields_callbacks_initted = true
  end
end