--- 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.
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>