Salvar em duas tabelas no mesmo form

313 views
Skip to first unread message

Fabiana Munhoz

unread,
Feb 14, 2012, 6:01:18 AM2/14/12
to rails-br
Bom dia Pessoal

É o seguinte: tenho uma formulário reserva de salas no qual cadastro
as propriedades de uma reserva.
Local, Pessoa, Data inicio e Data Fim.
Porém quando a reserva for algo que é para reservar por 1 mês uma
sala: por exemplo toda terça e quinta das 12:00 ao 13:00, aula de
inglês, inicio 14/02 e fim 28/02.
Vou além de cadastrar em evento (como tabela pai) também vou cadastrar
em agendamento.
A tabela de agendamento vai ser os eventos picados:
14/02 12:00 14/02 as 13:00
16/02 12:00 16/02 as 13:00 e assim sucessivamente até a data final
escolhida pra reserva do evento.

Gostaria de saber como eu faço para cadastrar em duas tabelas ao mesmo
tempo.
Quando eu der o salvar em evento, o sistema precisa salvar em evento
(os dados gerais) e em agendamento (todos os agendamentos referente
aquele evento).

Grata
Fabiana

Rafael - Cote

unread,
Feb 14, 2012, 6:11:51 AM2/14/12
to rail...@googlegroups.com
Olá, Fabiana

Você está procurando por "formulários aninhados"(nested attributes) esse assunto foi altamente discutido aqui no fórum ... se pesquisar na lista vai achar muita coisa.

Segue o link da api, já vai da uma luz.

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

Fabiana Munhoz

unread,
Feb 14, 2012, 8:13:23 AM2/14/12
to rails-br
Oi Rafael

Sou nova no rails. Por isso realmente não busquei por esse termo.

Ainda assim ficou uma dúvida.
No meu caso eu não tenho um form para agendamento, eu quero cadastrar
nessa tabela ao mesmo tempo que cadastro a reserva, ou seja no form da
reserva cadastrar as duas tabelas ao mesmo tempo. Cada uma com seus
campos que estarão todos neste form.
É uma tabela que depende de reserva.

Tipo é aquela ideia de nota fiscal e seus produtos. Você salva a nota
e seus itens tudo num "submit" só.
Esta solução que você passou se aplica ao meu caso mesmo assim?


Obrigada!
Fabiana

On 14 fev, 09:11, Rafael - Cote <rafael.c...@gmail.com> wrote:
> Ol�, Fabiana
>
> Voc� est� procurando por "formul�rios aninhados"(nested attributes) esse
> assunto foi altamente discutido aqui no f�rum ... se pesquisar na lista
> vai achar muita coisa.
>
> Segue o link da api, j� vai da uma luz.
>
> http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/Clas...
>
> On 14-02-2012 09:01, Fabiana Munhoz wrote:
>
>
>
>
>
>
>
> > Bom dia Pessoal
>
> > � o seguinte: tenho uma formul�rio reserva de salas no qual cadastro
> > as propriedades de uma reserva.
> > Local, Pessoa, Data inicio e Data Fim.
> > Por�m quando a reserva for algo que � para reservar por 1 m�s uma
> > sala: por exemplo toda ter�a e quinta das 12:00 ao 13:00, aula de
> > ingl�s, inicio 14/02 e fim 28/02.
> > Vou al�m de cadastrar em evento (como tabela pai) tamb�m vou cadastrar
> > em agendamento.
> > A tabela de agendamento vai ser os eventos picados:
> > 14/02 12:00 14/02 as 13:00
> > 16/02 12:00 16/02 as 13:00 e assim sucessivamente at� a data final
> > escolhida pra reserva do evento.
>
> > Gostaria de saber como eu fa�o para cadastrar em duas tabelas ao mesmo

Tiago Garcia

unread,
Feb 14, 2012, 8:49:22 AM2/14/12
to rail...@googlegroups.com
Ola

Eu ainda nao testei, mas creio que se vc tem 2 forms, da pra enviar eles em hash params diferentes.

se chamar um action, para cuidar dos 2, e salvar, teoricamente deve funcionar.

ja tentou assim?

--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para
rails-br+u...@googlegroups.com
Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: http://goo.gl/YGgt7

Rafael - Cote

unread,
Feb 14, 2012, 2:00:17 PM2/14/12
to rail...@googlegroups.com
Olha, pelo que eu entendi se aplica sim ... pq para você conseguir cadastrar os registros(datas) da tabela agendamento tu precisa ter o ID da "reserva", certo?

no teu caso o Form vai ser "reserva" e vai estar aninhado com agendamento ...

class Reserva < ActiveRecord::Base
    accepts_nested_attributes_for :agendamentos
end

parece complicado, mas não é... tem esses railscast exemplos na pratica as vezes ajuda a visualizar melhor o caso.

http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2

Lucas Moreira

unread,
Feb 14, 2012, 6:23:17 PM2/14/12
to rails-br
Opa, leia sobre o método "before_create". Nesse metodo você pode dar
um loop e ir cadastrando cada agendamento (caso você precise de ajuda,
posso sugerir como fazer esse loop)

Note que existe "before_create" e "before_save". Talvez seja legal
você trabalhar com ambos para ajustar caso o usuario altere a reserva
pai, assim evita problemas com os agendamentos.

Espero ter ajudado!
Lucas Moreira.

Fabiana Munhoz

unread,
Feb 17, 2012, 7:14:38 AM2/17/12
to rails-br
Agradeço a todos pelas tentativas que sugeriram e pelo apoio.
Vou pesquisar cada sugestão para aprender melhor.

A equipe aqui resolveu provisoriamente: depois de salvar o evento
forçar a chamada para salvar o agendamento.

Fabiana
Reply all
Reply to author
Forward
0 new messages