class ViewModel::ActiveRecord
def find(id_or_ids, scope: nil, lock: nil, eager_include: true)
def find(id_or_ids, scope: nil, lock: nil, eager_include: true) find_scope = self.model_class.all find_scope = find_scope.order(:id).lock(lock) if lock find_scope = find_scope.merge(scope) if scope ViewModel::Utils.wrap_one_or_many(id_or_ids) do |ids| models = find_scope.where(id: ids).to_a if models.size < ids.size missing_ids = ids - models.map(&:id) if missing_ids.present? raise ViewModel::DeserializationError::NotFound.new( missing_ids.map { |id| ViewModel::Reference.new(self, id) }) end end vms = models.map { |m| self.new(m) } ViewModel.preload_for_serialization(vms, lock: lock) if eager_include vms end end