
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.