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]
Olá Carlos,
Ótima dica, tomei a liberdade de fazer uma alteraçãozinha e aumentar a base de codigo do refactoring game.
http://refactoringgame.railsrumble.com/codes/17
Abraços
Muito boa dica
self.first_name, self.last_name = name.split(‘ ‘, 2)
Taí uma coisa que gosto em Ruby, tem sempre um jeito de deixar o código melhor.
E mais uma vez parabens pelo projeto Eduardo.
Ae Carlos,
Tem q dar uma melhorada grande nele, tem aqueles bugs de identação, e várias outras coisinhas que eu já vi.
Abraços..
Legal, não sabia desse segundo parâmetro do split. Realmente resolve o problema.