No último artigo desta série comentei sobre a nova forma de atribuir valores à associações usando a opção :accessible.
Agora vou mostrar uma das grandes vantagens dessa novidade. Fazendo uso deste novo recurso podemos melhorar a forma como usamos o método fields_for. Vamos pegar um exemplo, baseado nos códigos do artigo anterior:
<% form_for @post do |f| %>
<%= f.text_field :body %>
<% fields_for :author do |a_f| %>
<%= a_f.text_field :name %>
<% end %>
<%= submit_tag %>
<% end %>
Estou usando o método fields_for para acrescentar o nome do autor na página de criação de posts. Agora vem a melhor parte, veja como ficaria a criação do post e do autor usando este novo recurso:
class PostController < ApplicationController
def new
@post = Post.create(params[:post])
respond_to do |wants|
...
end
end
end
Veja que estou usando apenas o método create do objeto Post. Como foi definido a opção :accessible do relacionamento deste objeto com o objeto Author como verdadeiro (true), a criação do autor é automática e transparente.
Essa feature é bem legal. Vale lembrar que ainda não foi implementada a capacidade de update e destroy com hashs aninhados no ActiveRecord.
sinistro, essas coisas automáticas do rails que fazem toda a diferença… não tenho saudade nenhuma do meu tempo de php e delphi.