relacionamento has_many
bom nada melhor do que começar falando de relacionamento,
porque relacionamento é importante dizendo de uma forma técnica e simples que server para relacionar dados entre tabelas, vamos supor
assim uma loja, nessa loja você tem clientes esses clientes tem dividas em sua loja em tão como podemos fazer,vamos criar uma tabela cliente e uma tabela divida cada cliente vai ter sua divida certo então o devemos fazer relacionar cada cliente como sua divida. chega de papo vamos colocar isso em pratica.
vamos lá no meu terminal criar um projeto
rails loja
cd loja
vamos criar um scaffod algo bem simples só como exemplo.
primeiro clientes.
ruby script/generate scaffold cliente nome:string endereco:string rg:string cpf:string telefone:string
agora dividas
ruby script/generate scaffold divida cliente_id:integer valor:decimal vencimento:date tipo:string
para que esse (cliente_id:integer) cliente é o nome da tabela e eu estou colocando ele dentro da tabela divida essa é uma forma de ligar elas .
nesse (tipo) nos vamos por um select informado pago ou pendente mais para frente.
vamos dar um rake
rake db:migrate
e vamos ver como ficou
ruby script/server
vamos lá então ver as apps
primeiro de tudo vamos criar o relacionamento
entao entre em model/cliente
e vamos por
has_many :dividas
o que estou dizendo com isso?
estou dizendo (um para muitos )
no nosso caso um cliente para muitas divida
tambem temos o belongs_to que ao contrario de has_many quer dizer muitos para um não vamos usar nesse exemplo mas em outra oportunidade estarei falando mais.
ok até aqui, vamos ver nossas views
vamos em views/dividas copie os arquivos index.html.erb e new.html.erb e cole na pasta views/clientes e edite o nome do arquivo para _index_divida.html e _new_divida.html não esqueça de por underline( _ )antes se não vai dar erro.
dentro da _index_divida.html você tem
<% @dividas.each do |divida|%>
altere isso para
<% for divida in dividas %>
e dentro da _new_divida.html você tem
<% form_for(@divida) do |f| %>
altere isso para
<% form_for(divida) do |f| %>
simplesmente tire o (@)
tem bem coloque um select no lugar do (tipo)
<p>
<%= f.label :valor %><br />
<%= f.text_field :valor %>
</p>
altere para
Tipo:<%= f.select :tipo, “<option>PAGO” “;%= f.select :tipo, “<option>PAGO” “;%= f.select :tipo, “<option>PAGO” “
agora em views/clientes dentro do show.html vamos criar as parciais (partial)
<%= render :partial=>”index_divida”, :locals=>{:dividas =>@cliente.dividas} %>
<%= render :partial=>”new_divida”, :locals=>{:divida =>Divida.new(:cliente_id=>@cliente.id)}%>
preste muita atenção nos plurais (s) e nos maiusculos e minusculos
salve e execute isso.
crie um cliente e veja que dentro do esta new divida e a index relacionada para cada cliente crie um outro cliente e veja que as dividas que você crio dentro do primero cliente não aparece no segundo cliente e assim vise versa quer dizer que deu tudo certo e que cada cliente tem a sua divida .
em outra oportunidade estarei falando mais afundo sobre partial
Até a próxima .

cara faz tento que estou procurando algo sobre relacionamento nossa e o material esta super bom
parabens
Ola, comecei a me aventurar recentemente pelo mundo de RoR e enquanto fazia esse tutorial troquei a linha :
ruby script/generate scaffold cliente nome:string endereco:string rg:string cpf:string telefone:string
por:
rails generate scaffold cliente nome:string endereco:string rg:string cpf:string telefone:string
pois do primeiro nao estava funcionando, alguma diferenca entre os dois metodos??
abcs
nao nao isso vai variar da verso e plataforma tah tudo certo,
qualquer coisa estamos ai
abraco