Estoy viendo un RailsCast sobre asociaciones polimórficas. http://railscasts.com/episodes/154-polymorphic-association?view=asciicast
Hay tres modelos diferentes Artículo, Foto y Evento que cada uno toma un comentario de Comment.rb. (Artículo, Foto y Evento cada uno de un article_id, photo_id y event_id). En la enumeración de los comentarios que tiene el problema de averiguar cuál de los 3 modelos para listar los comentarios para, por lo que hace esto en la acción index
def index
@commentable = find_commentable
@comments = @commentable.comments
end
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
Mi pregunta es, ¿cuál es $1
?
¿solo se crea cuando se usa el operador de tilde igual? –
Sí, '$ 1',' $ 2' etc. coinciden con el primer, segundo, etc. grupos entre paréntesis en la última expresión regular; consulte el enlace en la respuesta. Rubocop recomienda usar 'Regexp.last_match (n)' en su lugar (note n está basado en cero, por lo tanto '$ 1' ==' #last_match (0) ' – MatzFan