diff options
author | José Mota <josemota.net@gmail.com> | 2012-04-06 19:40:37 +0100 |
---|---|---|
committer | José Mota <josemota.net@gmail.com> | 2012-04-06 19:40:37 +0100 |
commit | 3204575bfcd1f12db5945c8959073d40915cfdfe (patch) | |
tree | 5b35a0896f91043c931482b5ecb99dc2aa154310 /_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html | |
parent | 6644e3213758ac5f8ea4f388d4dcf4105e7d4530 (diff) |
Import all posts.
Diffstat (limited to '_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html')
-rw-r--r-- | _posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html b/_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html new file mode 100644 index 0000000..7a9be25 --- /dev/null +++ b/_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html @@ -0,0 +1,65 @@ +--- +layout: post +title: Rails à moda do Porto — Episódio 3 +tags: +- Development +- Português +- rails +- screencast +status: publish +type: post +published: true +meta: + _edit_last: '1' +--- +<video width='465' controls='controls' src='/wp-content/uploads/rails-a-moda-do-porto/003.mov'></video>
+
+A parte mais importante de uma aplicação: pô-la a trabalhar. Como? Construindo lógica para satisfazer as necessidades do negócio.
+
+<a href="/wp-content/uploads/rails-a-moda-do-porto/003.mov">Neste episódio</a> constrói-se uma relação entre dois modelos: Aluno com Disciplina através de um novo modelo: Nota. Foi um bocado difícil por tudo a funcionar mas espero que consigam assimilar o conceito de relações, dado o contexto. Existem outras situações com certeza e terão a sua ocasião de serem abordadas.
+
+<!--more-->
+
+Se por alguma razão não conseguirem compreender o procedimento, comentem em baixo ou mandem-me um email com a vossa dúvida, terei o maior gosto em explicar.
+
+<h3>Código</h3>
+
+<pre class='brush:bash'>script/generate scaffold disciplina nome:string creditos:integer
+script/generate model nota valor:integer aluno_id:integer disciplina_id:integer</pre>
+
+<pre class='brush:rails'>class Nota < ActiveRecord::Base
+ belongs_to :aluno
+ belongs_to :disciplina
+end
+
+class Disciplina < ActiveRecord::Base
+ has_many :alunos, :through => :notas
+ has_many :notas
+end
+
+class Aluno < ActiveRecord::Base
+ has_many :disciplinas, :through => :notas
+ has_many :notas
+end</pre>
+
+<pre class='brush:rails'>
+# atribuir_disciplinas.html.erb
+
+<% form_for @aluno do |f| %>
+ <% for disciplina in Disciplina.all do %>
+ <p>
+ <%= label_tag "", disciplina.nome %>
+ <%= check_box_tag "aluno[disciplina_ids][]", disciplina.id, @aluno.disciplinas.include?(disciplina) %>
+ </p>
+ <% end %>
+ <%= f.submit "Atribuir" %>
+<% end %>
+
+# alunos/show.html.erb
+
+<ul>
+ <% for aluno in @disciplina.alunos do%>
+ <li><%= aluno.primeironome %> <%= aluno.ultimonome %></li>
+ <% end %>
+</ul>
+</pre> |