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