Carlos Brando

Nome do Jogo

Atributos virtuais no Rails

Imagine a seguinte situação: Uma tabela users com duas colunas, first_name e last_name.

[source:ruby] 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 [/source]

Mas em minha página de cadastro quero que meu usuário preencha apenas um campo com o nome completo.

[source:html]

Cadastro

<% form_for :user, :url => user_path do |f| %>

Nome Completo:
<%= f.text_field :full_name %>

<% end %> [/source]

Podemos resolver isto de uma forma muito simples:

[source:ruby] 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 [/source]

Comments