¿Cómo probar si una, dos o ambas variables están en blanco o nulas?
Frecuentes
Visto 723 equipos
1
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?
4 Respuestas
1
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
1
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
0
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
0
[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 ruby-on-rails ruby or haz tu propia pregunta.
¿Eficiente de qué manera? Si necesita probarlos a ambos, debe probarlos a ambos. - Dave Newton