En un modelo hay un campo
validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i
Se ve bastante extraño para mí. Soy consciente de que esta es una expresión regular. Pero me gustaría:
- para saber exactamente lo que significa. Es
%r{value}
igual a/value/
? - ser capaz de reemplazarlo con el operador normal de Ruby regex
/some regex/
o~=
. ¿Es posible?
ruby-on-rails
ruby
Alexandre
fuente
fuente
%r{}x
?/.../x
También ignora los espacios en blanco. Esta no es una propiedad especial de la%r
sintaxis. Todas las opciones que pueden seguir/../
también pueden seguir%r{}
.\.
=> contiene un punto(gif|jpg|jpeg|png)
=> entonces, cualquiera de estas extensiones$
=> el final, nada despuési
= = mayúsculas y minúsculasY es lo mismo que escribir
/\.(gif|jpg|jpeg|png)$/i
.fuente
%w[1 2 3]
es lo mismo que[1, 2, 3]
por ejemplo.%w[1 2 3]
es no lo mismo que[1, 2, 3]
. Es lo mismo que['1', '2', '3']
.Con
%r
, puedes usar cualquier delimitador.Podrías usar
%r{}
o%r[]
o%r!!
etc.El beneficio de usar otros delimitadores es que no necesita escapar del
/
usado en el literal regex normal.fuente
Esta expresión regular coincide con todas las cadenas que terminan en .gif, .jpg ...
podrías reemplazarlo con
fuente
Significa que
image_file_name
debe terminar ($
) con punto y uno de gif, jpg, jpeg o png.Sí,
%r{}
significa exactamente lo mismo,//
pero%r{}
no necesitas escapar/
.fuente