Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu tenho uma tabela Empresa e outra tabela Usuário, a chave estrangeira da empresa está no usuário pois uma empresa possui vários usuários. E eu pretendo usar a gem DEVISE na tabela de empresa para que só quem pode cadastrar um novo usuário seja quem está logado, pra isso, dentro do cadastro usuário vou mandar o id da empresa que esta logada, pro cadastro do usuário, ou seja vou mandar o id direto quando clicar em cadastrar, não vou escolher a empresa.OBS: creio que eu tenha que guardar as informações da empresa logada numa sessão, daí no momento do cadastro de usuário, mandar o id da empresa. A lógica é essa, mas como faço isso? pois sou novo no rails e não conheço todos os recursos do framework.
Bom dia Breno!
Creio que o resumo da sua pergunta seja como obter o id do usuário corrente(que no seu caso será empresa) para salvar na tabela de usuário né ?!
Se for isso mesmo, o Devise disponibiliza alguns filters e helpers que você pode usar em qualquer controller/view.
Um deles é o current_user(mas no seu caso será current_empresa).
Esse helper refere-se à empresa conectada atualmente.
OBS: Lembrando que você precisa adicionar um before_filter em seus controllers para que o devise faça a autenticação e disponibilização dos filters e helpers. Para configurar, basta incluir em seu controller:
before_filter :authenticate_empresa!
Com isso, na action(método) create do seu controller de Usuario(usuarios_controller.rb), você poderá criar o usuário da seguinte maneira:
def create
...
current_empresa.usuarios.create(params[:NomeDoParametro])
ou
Usuario.create(empresa_id: empresa_current.id, ...)
...
end
Aconselho você ler a documentação do Devise no github.
https://github.com/plataformatec/devise#controller-filters-and-helpers