Sha256: ab4a58037d0223194a390ecf1e39f363aebd08014bb3a815df1d6aa3c56275a5

Contents?: true

Size: 664 Bytes

Versions: 6

Compression:

Stored size: 664 Bytes

Contents

# require "eitil_core/active_record/hash_to_relation"

require "eitil_core/errors/raise_error"

class Array

  def to_relation
    
    return self unless self.present?

    unless self.all? { |item| item.class.ancestors.include? ApplicationRecord }
      raise_error "InvalidArrayError", ".to_relation requires that all array items are model instances"
    end

    unless self.each_cons(2).all? { |el1, el2| el1.class == el2.class }
      raise_error "InvalidArrayError", ".to_relation requires that all array items are instances of the same model"
    end

    _class = self.first.class
    ids    = self.map(&:id)

    return _class.where(id: ids)

  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
eitil-1.1.11 eitil_core/lib/eitil_core/active_record/hash_to_relation.rb
eitil-1.1.10 eitil_core/lib/eitil_core/active_record/hash_to_relation.rb
eitil-1.1.9 eitil_core/lib/eitil_core/active_record/hash_to_relation.rb
eitil-1.1.8 eitil_core/lib/eitil_core/active_record/hash_to_relation.rb
eitil-1.1.7 eitil_core/lib/eitil_core/active_record/hash_to_relation.rb
eitil-1.1.6 eitil_core/lib/eitil_core/active_record/hash_to_relation.rb