Por favor, perdóname si esto es algo de nivel principiante. Estoy buscando una forma más limpia de hacer algo como esto,
def function return Books.all if Books.any? return BooksForeign.all if BooksForeign.any? nil end Como básicamente estoy duplicando la llamada, me preguntaba si hay una forma mejor y más sencilla de hacerlo. Solo quiero regresar si hay algo que regresa con el método Books o el método BooksForeign , ya que al método que espera un retorno no le importa si son libros extranjeros o no.
def function Books.all.presence || BooksForeign.all.presence end Object#presence es una de las extensiones centrales más útiles de ActiveSupport para Ruby. ¿Devuelve el objeto si está present? o nulo en caso contrario. ¿Las colecciones vacías no están present? .
Si tuviera una lista completa de clases, podría usar Enumerable#find , que devolvería el primer valor no falso:
[Foo, Bar, Baz].find { |klass| klass.all.presence }