Tengo un modelo de usuario, que tiene métodos de votación. Quiero escribir métodos proxy para votar.¿Qué es Rails Way? (legibilidad frente a secado)
Ésta es la manera legible:
def vote_up item
return false unless can? :vote, item
vote item, :up
end
def vote_down item
return false unless can? :vote, item
vote item, :down
end
Y esto es vía seca:
%w(up down).each do |vtype|
define_method "vote_#{vtype}" do |item|
return false unless can? :vote, item
vote item, vtype.to_sym
end
end
¿Cuál es mejor y por qué?
Personalmente, teniendo en cuenta que solo tiene 2 métodos aquí, y es poco probable que agregue más (vote_sideways? Vote_diagonally?) Yo simplemente seguiría con la manera legible. Sin embargo, si pudiera tener muchas, muchas más, me decantaría por DRY (porque se puede extender fácilmente) con un comentario legible para explicar a otros desarrolladores (¡o a usted mismo más tarde!). – MrDanA
Estoy de acuerdo con @MrDanA --- otra pregunta: ¿quieres usar esto en más clases que solo este "elemento"? –
atm La respuesta de MrDanA es mejor. ty! – enRai