Sha256: 277d4c119c3132b80fe22b3b5877672d52f899f8ba73acf4a94777e561d9a4aa

Contents?: true

Size: 803 Bytes

Versions: 7

Compression:

Stored size: 803 Bytes

Contents

# frozen_string_literal: true

module Consyncful
  class Base
    include Mongoid::Document
    include Mongoid::Attributes::Dynamic

    store_in collection: 'contentful_models'

    cattr_accessor :model_map

    def self.contentful_model_name(name)
      self.model_map ||= {}

      self.model_map[name] = self
    end

    # rubocop:disable Lint/NestedMethodDefinition
    def self.references_many(name)
      has_and_belongs_to_many name.to_sym, class_name: 'Consyncful::Base', inverse_of: nil do
        def in_order
          _target.to_a.sort_by { |a| _base[foreign_key].index(a.id) }
        end
      end
    end
    # rubocop:enable Lint/NestedMethodDefinition

    def self.references_one(name)
      belongs_to name.to_sym, optional: true, class_name: 'Consyncful::Base'
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
consyncful-0.4.0 lib/consyncful/base.rb
consyncful-0.3.3 lib/consyncful/base.rb
consyncful-0.3.2 lib/consyncful/base.rb
consyncful-0.3.1 lib/consyncful/base.rb
consyncful-0.3.0 lib/consyncful/base.rb
consyncful-0.2.0 lib/consyncful/base.rb
consyncful-0.1.0 lib/consyncful/base.rb