Sha256: f2be3958ed9f5d43903a0044a5d7f1b425b887774b54b852af17036bbdf91aff

Contents?: true

Size: 856 Bytes

Versions: 63

Compression:

Stored size: 856 Bytes

Contents

module SubjModels

  module ComprisingExternalId

    extend ActiveSupport::Concern

    included do
      validates :external_id, uniqueness: true, allow_nil: true, allow_blank: true
      scope :external_id, -> id { where(external_id: id) }
    end

    module ClassMethods
      def find_by_external_or_internal_id(id)
        if is_integer?(id)
          self.find(id)
        else
          self.find_by!(external_id: id)
        end
      end

      def is_integer?(value)
        return true if value.is_a?(Integer)
        value.to_i.to_s == value
      end

      def parent_id_scope(parent, id)
        if id.is_a?(Array) || is_integer?(id)
          joins(parent.to_sym).where("#{parent.pluralize}.id = ?", id)
        else
          joins(parent.to_sym).where("#{parent.pluralize}.external_id = ?", id)
        end
      end
    end

  end

end

Version data entries

63 entries across 63 versions & 2 rubygems

Version Path
subj_sub_models-0.0.3.29 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.28 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.27 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.26 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.25 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.24 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.23 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.22 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.21 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.20 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.19 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.18 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.17 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.16 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.15 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.14 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.13 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.12 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.11 lib/subj_models/concerns/comprising_external_id.rb
subj_sub_models-0.0.3.10 lib/subj_models/concerns/comprising_external_id.rb