Dando continuidade nas aulas, vou mudar um pouco, ao invés de PowerPoint colocarei um post tradicional. A idéia desse post é mostrar como ajustar uma tela gerada pelo scaffold adicionando uma combobox.
Obs: O exemplo aqui serve somente para ensinar o uso de combobox, não se trata da regra de negócio que pretendo aplicar, pois na tela de cadastro de memo vocês verão a combo de usuário, mas na realidade, o usuário vai ser pego da sessão.
Primeiro passo então é gerar o scaffold para memo (visto em aulas passadas).
Sabemos que um usuário pode ter zero ou mais memos e um memo só pode ter um usuário, então temos uma relação zero para muitos. Para refletir essa relação, altere os models User e Memo conforme imagem abaixo.

Como memo se relaciona com usuário, sua tela de cadastro (view new) deve ter uma combo com os usuários disponíveis para seleção.
Agora abra o código fonte da view new do controller memo, no meu caso (c:\agenda\app\views\memos\new.html.erb). Veja que onde tem trocamos por .

O método helper f.select é o responsável em criar uma caixa de seleção e recebe os parâmetros:
:user_id – é o nome do campo na tabela memo
@users – hash que é retornado pelo controller *veremos abaixo
:prompt=>”texto” – texto que aparece na combo
Agora abra o memos_controller.rb e adicione um filtro que chama o método loadUsers antes dos métodos new, edit, create e update. Altere também o método index colocando o include no Memo.all, isso fará que o método carregue somente uma vez os usuários.
Adicione antes do último end o código do método loadUsers que retorna o objeto @users (lembra-se que usamos ele na view new para preencher a combo) que é uma hash de usuários. Cada objeto só tem os atributos login e id.
O método collect retorna um hash de todos os objetos retornados no método all.
Ao submeter a página, sabemos que o sistema redirecionará para a view show (c:\agenda\app\views\memos\show.html.erb) , e nela devemos mostrar o nome do usuário, então basta ajustar o código conforme imagem abaixo. Repare que só alteramos a linha 7, onde tinha @memo.user colocamos @memo.user.login.
Analogamente, você pode alterar a view index para que mostre também o nome do usuário na listagem que aparece.