Rodrigo Alves Vieira

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:

Visualização da query SQL no console

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:

# Antes

class House
  has_many :rooms, conditions: 'foo = #{bar}'
end

# Agora

class House
  has_many :rooms, conditions: proc { "foo = #{bar}" }
end
# 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.