Edge Rails: Usando a opção :accessible para fazer atribuições em massa no ActiveRecord

28 de julho de 2008  |  Rails 2.2  | 

Todos os métodos de associações do ActiveRecord (belongs_to, has_one, has_many e has_and_belongs_to_many) receberam um nova opção que permite a atribuição de valores para suas associações usando hashes aninhados.

Vamos pegar como exemplo um modelo chamado Post:

class Post < ActiveRecord::Base
  belongs_to :author, :accessible => true
  has_many :comments, :accessible => true
end

Note que logo após associar este modelo com author e comments estou definindo a nova opção :accessible como true (verdadeiro). Com esta opção “ligada” eu posso fazer algo assim:

post = Post.create({
  :title => 'Accessible Attributes',
  :author => { :name => 'David Dollar' },
  :comments => [
    { :body => 'First Post!' },
    { :body => 'Nested Hashes are great!' }
  ]
})

Veja que estou criando todas as associações usando apenas um único hash com sub-níveis para cada associação. Isto não é possível de forma automática na versão atual do Rails.

Eu também poderia fazer algo assim, para adicionar um novo comentário:

post.comments << { :body => 'Another Comment' }

Esta nova funcionalidade pode parecer um pouco estranha ou insignificante, mas a grande vantagem por trás dela será vista no próximo artigo desta série.



5 Comentários


  1. Olá Carlos,

    Isso é realmente muito útil e interessante.

    Estou usando a versão 2.1 do Rails e no projeto que estou desenvolvendo preciso usar isso… Em qual versão ficará disponível, na 2.2? (tentei usar na 2.1 e nao funcionou)

    Neste caso você saberia me sugerir algum plugin que faça a mesma coisa?

    Obrigado!

  2. Andrey, exatamente isto vai estar disponível no Rails 2.2. Se seu projeto só vai estar em produção depois de setembro (data prevista para lançamento do 2.2) dá para ir usando o edge rails.

  3. Opa, obrigado pelas dicas! Já estou usando o Edge e estou gostando das novidades :-)

    Abraços

Trackbacks

  1. Nome do Jogo » Artigo » Edge Rails: Fazendo uso da opção accessible em formulários
  2. Nome do Jogo » Blog Archive » Esqueça atribuições em massa no Rails, pelo menos por enquanto
  3. Rails 2.3: Nested Attributes | Nome do Jogo

Deixe um comentário