Module: Redistry::List::ClassMethods

Defined in:
lib/redistry/list.rb

Instance Method Summary collapse

Instance Method Details

#has_list(name, options = {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/redistry/list.rb', line 12

def has_list(name, options = {})
  klass = options.delete(:class) || self

  raise("The class `#{klass.name}` must have an unique `id` to use `has_list`") unless klass.instance_methods.include?(:id)

  define_method name do
    return instance_variable_get("@_#{name}_has_list") if instance_variable_get("@_#{name}_has_list")
    instance_variable_set("@_#{name}_has_list", CollectionProxy.new(klass, "#{name}-#{id}", options))
  end
end

#list(name, options = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/redistry/list.rb', line 23

def list(name, options = {})
  klass = options.delete(:class) || self

  instance_variable_set("@_#{name}_list".to_sym, CollectionProxy.new(klass, name, options))
  class_eval <<-EOF
    def self.#{name}
      @_#{name}_list
    end
  EOF
end