Por Dentro do Rails 3.1 - ActiveRecord
Há duas semanas comecei uma série de posts explicando as novidades no Ruby on Rails com um post sobre mudanças gerais. Nesse novo post estarei mergulhando no que há de novo com o ActiveRecord 3.1.
Pluralizacão de nome do Model
Um (railer) sabe que, por exemplo, para um model chamado Page o Rails por padrão pluraliza esse nome para a tabela no BD, ficando assim, pages.
Você pode desabilitar isso de maneira bem fácil no novo AR, com:
class Page < ActiveRecord::Base
self.pluralize_table_names = false
end
Visualização da query SQL no console
Sempre foi possível visualizar as consultas ao banco feitas pelo Rails no log do seu projeto e agora você visualiza essas consultas no console do Rails também:

update_collumn
Esse novo método toma dois argumentos: o primeiro o nome do campo (referente a tabela da classe onde ele é chamado) e o valor a ser salvo.
Car.first.update_column(:name, "Porsche Carrera GT")
Importante: esse método ignora todos os callbacks, incluindo validacões. Tome cuidado!
Default scope
Escopos (scope) são uma mão na roda para o programador no Rails, a versão 3.1 traz* uma funcionalidade chamada default_scope, demonstrada a seguir:
class User < ActiveRecord::Base
default_scope :where(city: "Recife")
end
A partir de agora o User.all já retorna os dados “scopados”.
P.S: Esse método já havia sido incorporado ao Rails em outros tempos mas foi removido e agora está de volta.
Depreciações
Segue a lista de coisas que se aposentaram no Rails 3.1:
Fixtures no formato CSV. (Eu nunca vi ninguém fazer isso de qualquer forma, mas agora você não pode mais. YAML é o único formato aceito.)
Não se pode mais interpolar strings SQL em associacões e condicões, agora você tem que usar um proc, exemplo:
# Antes
class House
has_many :rooms, conditions: 'foo = #{bar}'
end
# Agora
class House
has_many :rooms, conditions: proc { "foo = #{bar}" }
end
- Passar hash de opcões contendo conditions, group, include, joins, offset, limit, order, lock, select, from, having, readonly, enfim, toda essa API de consulta que “um dia foi nova”:http://m.onkey.org/active-record-query-interface está depreciada no novo AR onde tudo isso foi minimizado e simplificado, toda a responsabilidade de filtragem por hash dos opções passa para o método where:
# Antes
class Gallery
scope :approved, conditions: {approved: true }
end
# Agora
class Gallery
scope :approved, where(approved: true)
end
Essas parecem ter sido as maiores mudanças no ActiveRecord 3.1 até agora, sabendo que mais coisas podem vir até a final release, pensada pro final desse mês de Agosto.
Rodrigo Alves Vieira is a 19 year-old hacker from Paulista, Brazil. He studies Computer Science at UFPE. Read more about him.