From 3204575bfcd1f12db5945c8959073d40915cfdfe Mon Sep 17 00:00:00 2001 From: José Mota Date: Fri, 6 Apr 2012 19:40:37 +0100 Subject: Import all posts. --- ...009-08-30-rails-a-moda-do-porto-episodio-3.html | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 _posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html (limited to '_posts/2009-08-30-rails-a-moda-do-porto-episodio-3.html') 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' +--- + + +A parte mais importante de uma aplicação: pô-la a trabalhar. Como? Construindo lógica para satisfazer as necessidades do negócio. + +Neste episódio 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. + + + +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. + +

Código

+ +
script/generate scaffold disciplina nome:string creditos:integer
+script/generate model nota valor:integer aluno_id:integer disciplina_id:integer
+ +
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
+ +
+# 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>
+
-- cgit v1.2.3-54-g00ecf