Sha256: 404f3e9356b8c54091a3993eae06778a5e18c4a1db38d1aaa677a7d474e88b23
Contents?: true
Size: 1.01 KB
Versions: 46
Compression:
Stored size: 1.01 KB
Contents
# require "eitil_core/active_record/array_to_relation" require "eitil_core/errors/raise_error" class Array def to_relation(fallback_class = ApplicationRecord) # Return an empty ActiveRecord_Relation instance when no objects are present, # instead of returning the empty array itself. The reason being, that when you # always return an association, you won't run into problems with undefined methods # called later on, expecting an association instead of an array. return fallback_class.none 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
46 entries across 46 versions & 1 rubygems