Sha256: e0a4773ec91eee6cd8629afd55265a9c25f29e0b87a0e51972b6a61706665cd4
Contents?: true
Size: 970 Bytes
Versions: 1
Compression:
Stored size: 970 Bytes
Contents
# frozen_string_literal: true require 'array_association/version' require 'active_support/concern' # Usage: # # include ArrayAssociation # array_column :order_ids, :orders, { class: Order } # # in this case some methods will be defined: # orders, which returns collection of Order # order_ids=, which sets normalized order_ids # orders=(values), which maps collection and sets order_ids # module ArrayAssociation extend ActiveSupport::Concern autoload :Utils, 'array_association/utils' module ClassMethods 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
array_association-0.1.0 | lib/array_association.rb |