¿Cómo probar si una, dos o ambas variables están en blanco o nulas?

tengo 2 columnas (columna_a y columna_b) en la base de datos - ambos son cadenas. Necesito probar, si columna_a or columna_b o ambos son cero or en blanco.

¿Cuál es la mejor manera de hacer eso? Lo que estoy haciendo actualmente es que estoy probando columna_a y luego columna_b - el caso es que necesito ejecutar el mismo código para ambas variables.

¿Cuál es la forma más eficiente de probar lo anterior?

preguntado el 15 de febrero de 14 a las 20:02

¿Eficiente de qué manera? Si necesita probarlos a ambos, debe probarlos a ambos. -

4 Respuestas

Puedes con un número arbitrario de variables

[column_a, column_b].collect(&:to_s).all? :empty?

o si al menos uno tiene que ser nulo o en blanco

[column_a, column_b].collect(&:to_s).any? :empty?

Respondido 15 Feb 14, 20:02

Creo que la mejor manera es definir un método personalizado en su modelo.

def a_and_b
    (columna.blank? || columna.nil?).to_i + (columnb.blank? || columnb.nil?).to_i*2
end

Valores posibles:
0: ninguno vacío o en blanco
1: un vacío o en blanco
2: b vacío o en blanco
3: ambos vacíos o en blanco

Llame así:

record.a_and_b

Respondido 15 Feb 14, 22:02

Una forma sería mapear una matriz de esos valores. P.ej

[ column_a, column_b ].map { |x| x.nil? || x.empty? }

Terminará con una serie de valores booleanos que le indicarán cuáles son nulos/vacíos. Luego podría hacer la pregunta resultante si alguno está vacío (result.any? / result.all?).

Respondido 15 Feb 14, 20:02

[column_a, column_b].all?{|e| e.to_s.strip.empty?}

O en Rieles:

column_a.blank? && column_b.blank?

Respondido 15 Feb 14, 21:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.