Atributos virtuais no Rails
Published in
1 min readSep 15, 2007
Imagine uma situação onde você tenha uma tabela chamada users que possua duas colunas first_name e last_name para armazenar de forma separada o nome e sobrenome do usuário.
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :first_name, :string
t.column :last_name, :string
end
end
def self.down
drop_table :users
end
end
Agora digamos que no formulário de cadastro você deseje que o usuário preencha apenas um campo com o nome completo, como vemos baixo:
Cadastro<% form_for :user, :url => user_path do |f| %>
Nome Completo: <%= f.text_field :full_name %>
<% end %>
Isso pode ser resolvido de uma forma muito simples usando atributos virtuais:
class User < ActiveRecord::Base
def full_name
[first_name, last_name].join(‘ ‘)
end def full_name=(name)
split = name.split(‘ ‘, 2) self.first_name = split.first
self.last_name = split.last
end
end
Originally published at nomedojogo.com on September 15, 2007.