Carlos Brando

Nome do Jogo

O que vem por aí? Novidades nas Fixtures

A partir da próxima versão do Rails teremos alguns recursos extras nas famosas fixtures.

Geração de ID's automáticos

Hoje é assim:

george:
  id: 1
  name: George the Monkey

reginald:
  id: 2
  name: Reginald the Pirate

Cadas uma das fixtures tem dois identificadores, um para o banco (id: 1) e outro para humanos (george, por exemplo). Por que não gerar a primary key automaticamente? Assim criaríamos as nossas fixtures assim:

george: # generated id: 503576764
  name: George the Monkey

reginald: # generated id: 324201669
  name: Reginald the Pirate

A partir da próxima versão do Rails, o ActiveRecord irá até a classe correspondente à fixture e recuperará o campo que representa o primary key, inserindo o registro no banco corretamente.

O ID gerado é uma constante, então nós podemos descobrir o ID de qualquer fixture sem carregar nada, desde que saibamos qual o nome que foi dado ao registro.

Associações entre fixtures através dos nomes

Especificar um relacionamento entre fixtures é problemático e frágil, sem contar a dificuldade para se ler. E já que podemos remover o ID das fixtures, utilizando somente o nome, também poderemos realizar as associações diretamente pelo nome, assim:

### pirates.yml
reginald:
  name: Reginald the Pirate
  monkey: george

### monkeys.yml
george:
  name: George the Monkey
  pirate: reginald

E se tivermos um relacionamento has_and_belongs_to_many podemos fazer assim:

### monkeys.yml
george:
  name: George the Monkey
  pirate: reginald
  fruits: apple, orange, grape

### fruits.yml
apple:
  name: apple

orange:
  name: orange

grape:
  name: grape

Muito legal né?

Colunas do timestamp preenchidas automaticamente

Se sua tabela tiver qualquer uma das colunas no formato padrão dos timestamps do Rails (created_at, created_on, updated_at, updated_on), elas serão automaticamente preenchidas com um Time.now.

Se você quiser um valor diferente deste, você vai precisar fazer da forma antiga, preenchendo o valor na fixture.

Suporte aos padrões do YAML

Você com certeza sabe como usar o YAML para reutilizar informações no seu arquivo database.yml. Agora você também pode fazer o mesmo em suas fixtures:

DEFAULTS: &DEFAULTS
  created_on: <%= 3.weeks.ago.to_s(:db) %>

first:
  name: Smurf
  <<: *DEFAULTS

second:
  name: Fraggle
  <<: *DEFAULTS

Estas são algumas das novidades que nos aguardam, mas não acabou, muita coisa ainda deve mudar até a versão 2.0. Estou acompanhando de perto…

Tudo isto e mais um pouco pode ser encontrado aqui.

Comments