David acabou de incluir uma novidade interessante no Rails, a classe StringQuestioneer (alguns estão tentando mudar este nome para StringInquirer, mas por enquanto é StringQuestioneer mesmo).
Para entender como funciona, vou ter de explicar usando alguns exemplos. Vamos criar uma classe chamada Cliente que contém um método que retorna o status do cliente:
"ativo"
end
end
c = Cliente.new
c.status
# => "ativo"
c.status == "ativo"
# => true
c.status == "inativo"
# => false
Ok, até aqui tudo normal. Agora vou modificar a implementação do método status usando a classe StringQuestioneer, sempre lembrando que o retorno do método status pode vir de uma coluna do banco de dados (claro), isto é apenas um exemplo.
StringQuestioneer.new("ativo")
end
end
c = Cliente.new
c.status
# => "ativo"
# Agora vem a grande diferença:
c.status.ativo?
# => true
c.status.inativo?
# => false
Para verificar se o status do cliente é o esperado, ao invés de comparar Strings, eu uso um método com o valor do status e o sinal de interrogação. Gostou?
Claro que isto já começou a ser usado no próprio Rails. Por exemplo, caso você precise verificar se o Rails foi carregado em ambiente de produção, você pode substituir o velho Rails.env == “production”, por:
Rails.env.production?
Para variar criei mais um plugin só para ir colocando as novidades que gostei e não quero esperar
para usar. Para quem quiser acompanhar, tá no GitHub (para variar):
http://github.com/carlosbrando/back-to-the-future
1 Comentário em "Edge Rails: StringQuestioneer"
[...] de manhõ eu falei desta nova classe no Rails, e comentei que estavam querendo mudar o seu nome. Pois bem, isto aconteceu [...]
Deixe o seu comentário!