module ArrayAssociation::ClassMethods

Public Instance Methods

array_column(column, collection, options) click to toggle source
# 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