Sha256: f7f457aeff3e2d3ac689b15d487e834353a67445ba935b21104cefcf41f6b18f

Contents?: true

Size: 974 Bytes

Versions: 1

Compression:

Stored size: 974 Bytes

Contents

module Kangaroo
  module Model
    module Associations
      module One2many
        extend ActiveSupport::Concern
        
        def read_one2many_ids_for field
          field_value = send field.name
          return unless Array === field_value
          
          if Array === field_value.first
            field_value.first.last
          else
            field_value
          end
        end
        
        def write_one2many_ids_for field, ids
          send field.setter_name, coerce_one2many_ids(ids)
        end
        
        def read_one2many_objs_for field
          ids = read_one2many_ids_for field
          
          field.relation_class.where(:id => ids)
        end
        
        def write_one2many_objs_for field, objs
          ids = objs.map &:id
          
          write_one2many_ids_for field, ids
        end
        
        protected
        def coerce_one2many_ids ids
          [[6, 0, ids]]
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kangaroo-0.1.0.alpha1 lib/kangaroo/model/associations/one2many.rb