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?/.../xTambién ignora los espacios en blanco. Esta no es una propiedad especial de la%rsintaxis. 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_namedebe terminar ($) con punto y uno de gif, jpg, jpeg o png.Sí,
%r{}significa exactamente lo mismo,//pero%r{}no necesitas escapar/.fuente