Inserir registro em entidade-relacionamento - Ruby on Rails

Opa…
Estou iniciando em Ruby on Rails.
Encontrei a apostila da Caelum, e venho me baseando nela.
Estou com dificuldades de utilizar o RoR para inserir registros em uma entidade-relacionamento no banco de dados.

Tenho as seguintes tabelas:

  • pratos
  • restaurantes
  • pratos_restaurantes

Consigo inserir registros nas tabelas pratos e restaurantes, pois elas possuem classes e ai o procedimento é normal:

p = Prato.new :nome => "Arroz"
p.save

r = Restaurante.new :nome => "Madalosso", :endereco => "Rua Tal, 290", :especialidade => "Comida Italiana"
r.save

Tranquilo…
Mas como faria para inserir um registro na tabela “pratos_restaurantes” se não posso criar um objeto do mesmo e realizar o save?
A tabela “pratos_restaurantes” é uma entidade-relacionamento, portanto tem apenas os campos: “id_prato” e “id_restaurante”.

Tudo bem Bruno?

Essa tabela é usada internamente pelo ActiveRecord para relacionar seus objetos. O seguinte código irá gerar um novo registro nessa tabela:

r = Restaurante.find.first # busca o primeiro restaurante da tabela
p = Prato.find.first # busca o primeiro prato da tabela

r.prato = p # associa um prato a um restaurante
r.save # save =)

Para entender melhor os relacionamentos do ActiveRecord, dê uma olhada na documentação: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html.

Qualquer dúvida, vamos falando.