Rails delegate

In: rails| ruby

20 jul 2009

Uma funcionalidade interessante do Rails que descobri através do RubyFlow foi o delegate.

No exemplo simples abaixo, mostra como mapear atributos de um model em outro.

# app/models/customer.rb
class Customer < ActiveRecord::Base
    has_one :user
    delegate :login, :login=, :password, :password=, :to => :user
end
# app/models/user.rb
class User < ActiveRecord::Base
  belongs_to :customer
end

E o que isso faz? Olhe abaixo:

>> c = Customer.last
=> #<Customer id: 1, name: "Ricardo", created_at: "2009-07-19 00:50:01", updated_at: "2009-07-19 00:50:01">
>> c.user
=> #<User id: 1, login: "ricardo", password: "123456", customer_id: 1, created_at: "2009-07-19 00:50:36", updated_at: "2009-07-19 00:50:53">
>> c.login
=> "ricardo"
>> c.password
=> "123456"

Os atributos que foram declarados com delegate passam a responder como atributos do model Customer.

Comment Form

Sobre

Ricardo Duarte, 26 anos, trabalha na Nuntec, atua como desenvolvedor web a mais de 12 anos, já tendo passado por diversas tecnologias. Este blog irá comentar um pouco destas experiências.

rduarte's tweets

  • Venicios Ribeiro: É uma excelente forma de ativar o cache. Existem tbm outras tecnicas muito simples, como o Gzip. à [...]
  • Andre Ferraro: Muito bom!! Estou fazendo o meu e vou postar no meu blog. Vlw!! [...]
  • paulo henrique: Bom dia! existe algum app para usar o twitter no e71, que seja free [...]
  • Ricardo: Bruno, Aplicativo para IM com vídeo eu não conheço, mas para áudio você pode usar o Nimbuzz [...]
  • Bruno: Olá boa tarde. Gostaria de saber qual software IM pro E71 suporta conversação com áudio e video. [...]