Rails tem joias escondidas esperando para serem descobertas. Vou demonstrar o uso de Hash.slice, que é uma das principais extensões do ActiveSupport.
Aqui está um exemplo de como Hash.slice pode limpar um controlador, pegue este código existente, por exemplo:
def index
@users = User.paginate({ :page => params[:page].present? ? params[:page].to_i : 1, :per_page => params[:per_page].present? ? params[:per_page].to_i : 12 })
end
Com Hash.slice podemos encurtá-lo para:
def index
@users = User.paginate({ :page => 1, :per_page => 12 }.merge(params.slice(:page, :per_page)))
end
Hash.slice é que é muito indulgente. O método só retorna os atributos se eles existirem. Em nosso exemplo, temos certeza de que todas as condições serão atendidas porque os valores padrão serão substituÃdos apenas se Hash.slice os retornar.