Module: ArrayAssociation::ClassMethods

Defined in:
lib/array_association.rb

Instance Method Summary collapse

Instance Method Details

#array_column(column, collection, options) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/array_association.rb', line 22

def array_column(column, collection, options)
  define_method collection do
    options[:class].send(:where, id: send(column))
  end

  define_method "#{column}=" do |value|
    ids = Utils.normalize_integer_array(value)
    write_attribute(column, ids)
  end

  define_method "#{collection}=" do |values|
    ids = Array.wrap(values).map(&:id)
    send "#{column}=", ids
  end
end