summaryrefslogtreecommitdiff
path: root/_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html
diff options
context:
space:
mode:
authorJosé Mota <josemota.net@gmail.com>2012-04-06 19:40:37 +0100
committerJosé Mota <josemota.net@gmail.com>2012-04-06 19:40:37 +0100
commit3204575bfcd1f12db5945c8959073d40915cfdfe (patch)
tree5b35a0896f91043c931482b5ecb99dc2aa154310 /_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html
parent6644e3213758ac5f8ea4f388d4dcf4105e7d4530 (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.html65
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
+
+&lt;% form_for @aluno do |f| %&gt;
+ &lt;% for disciplina in Disciplina.all do %&gt;
+ &lt;p&gt;
+ &lt;%= label_tag &quot;&quot;, disciplina.nome %&gt;
+ &lt;%= check_box_tag &quot;aluno[disciplina_ids][]&quot;, disciplina.id, @aluno.disciplinas.include?(disciplina) %&gt;
+ &lt;/p&gt;
+ &lt;% end %&gt;
+ &lt;%= f.submit &quot;Atribuir&quot; %&gt;
+&lt;% end %&gt;
+
+# alunos/show.html.erb
+
+&lt;ul&gt;
+ &lt;% for aluno in @disciplina.alunos do%&gt;
+ &lt;li&gt;&lt;%= aluno.primeironome %&gt; &lt;%= aluno.ultimonome %&gt;&lt;/li&gt;
+ &lt;% end %&gt;
+&lt;/ul&gt;
+</pre>