Para entender esta alteração, vamos precisar analisar o mesmo código sendo executado em uma versão anterior do Rails e depois no Rails 2.2. Vamos pegar um modelo como exemplo:
end
Note que estou usando o método alias_attribute para criar um alias para o atributo body com o nome de text. Na teoria este método deveria replicar todos os métodos de leitura, escrita, pesquisa e qualquer outro que envolva o atributo body. Mas vejamos um exemplo sendo executado no Rails 2.1 ou anterior:
c = Comment.first
# => #<Comment id: 1, body: "my comment">
c.body
# => "my comment"
c.text
# => "my comment"
c.body = "a new message"
# => "a new message"
c.body_changed?
# => true
c.text_changed?
# => NoMethodError: undefined method `text_changed?' ...
Ao executar o método text_changed? temos um erro, porque o alias_attribute não estava replicando os métodos de rastreamento, mas isto já foi corrigido. Veja o mesmo código executado agora em um projeto Rails 2.2:
c = Comment.first
# => #<Comment id: 1, body: "my comment">
c.body
# => "my comment"
c.text
# => "my comment"
c.body = "a new message"
# => "a new message"
c.body_changed?
# => true
c.text_changed?
# => true
c.text_change
# => ["my comment", "a new message"]
Todos os exemplos dados aqui funcionarão somente no Ruby on Rails 2.2 ou superior. Você pode encontrar mais detalhes sobre esta e outras novidades do Rails 2.2 no e-book “Ruby on Rails – O que há de novo?“.
???
c.text_changed? # => truenão deveria ser?:
c.text_changed? # => falseLeonardo,
não, o correto é true mesmo.
Carlos, o método alias_attribute já existe no Rails 2.1.2? Estranhamente eu o utilizei aqui e ele não funcionou. De qualquer forma acabei descobrindo aqui um novo método que me parece ser bem útil: attribute_changed?.
Existe sim elomarns.
Ele existe desde o Rails 2.1.0.
Carlos, obrigado pelo esclarecimento. Devo estar fazendo algo errado aqui. Uma das coisas que me fez duvidar da presença do alias_attribute, além do fato dele não ter funcionado comigo, é a ausência dele na documentação do Rails, mas ele deve ser incluído em breve então.
http://apidock.com/rails/Module/alias_attribute?q=alias_attribute
Antes de comentar eu procurei no Google e achei essa página, mas como tenho o http://api.rubyonrails.org/ como documentação oficial da API do Rails , considerei que não tinha ainda na documentação.
A propósito, o http://api.rubyonrails.org/ deve ser mesmo considerado a documentação oficial da API do Rails?
http://api.rubyonrails.org/ esta ultrapassado!
Imaginei mesmo que o http://api.rubyonrails.org/ estava meio ultrapassado.
Obrigado novamente pelo esclarecimento, Carlos.