Cadastrar Funcionario e Usuario juntos

126 views
Skip to first unread message

Vinicius Silva

unread,
May 20, 2013, 6:10:40 PM5/20/13
to rail...@googlegroups.com
Boa noite galera! Sou novato em ruby on rails e estou sentindo umas dificuldades no formulário de cadastro.
Tenho uma view cadastro de funcionário, e no mesmo cadastro segue os campos do usuário.
 
Consigo inserir os valores no banco, porém acredito que eles não estejam associados, mesmo dizendo que um pertence ao outro. Posso não estar sabendo usar a linguagem.
 
Vou anexar os:
models, Usuário e Funcionário (1 funcionário possui 1 usuário // 1 usuário pertence a 1 funcionário)
controll Funcionário
view _form e index - funcionários
db schema
 
Quando acesso, http://127.0.0.1:3000/funcionarios vejo a lista de funcionários somente... e quando acesso http://127.0.0.1:3000/usuarios vejo a lista de usuários.
 
Desde já agradeço a ajuda.
usuario.rb
funcionario.rb
funcionarios_controller.rb
schema.rb
_form.html.erb
index.html.erb

Douglas Rossignolli

unread,
May 20, 2013, 6:20:09 PM5/20/13
to rail...@googlegroups.com


--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Atenciosamente,
Douglas Rossignolli

Vinicius Silva

unread,
May 20, 2013, 9:22:25 PM5/20/13
to rail...@googlegroups.com
Já estou dando uma olhada.
 
Nossa novato, novato mesmo... executei no terminal gem install simple_form e depois gem install nested_form
 
Verei se tem algo a mais pra fazer...
 
Exausto vendo isso. Muito ruim ficar preso num problema e não conseguir desenvolver... torcer para que de certo....

Everaldo Gomes

unread,
May 20, 2013, 9:33:39 PM5/20/13
to rail...@googlegroups.com
Uma dica: quando for assim, faça do jeito que você sabe. Faça em duas telas separadas...um cadastro de cada vez, depois tente "otimizar". Ajuda a não desanimar.


2013/5/20 Vinicius Silva <vinip...@gmail.com>
--

Vinicius Silva

unread,
May 20, 2013, 10:12:57 PM5/20/13
to rail...@googlegroups.com
Obrigado pelo apoio. Se liga isso é o projeto final da faculdade e a empresa que dava 100%bolsa faliu, logo só tenho ate o final desse semestre para fazer.
Tudo que aprendi na faculdade foi em JAVA. Até que me apresentaram o rails e uma apostila com um curso empresa fictícia Rogus. Fiz tudo certinho e absorvi rápido, o lance é que no meu projeto tem muito mais do que o curso. Ai fiquei travado nessa parte.
 
Mas não desanimo nunca.
 
O que postei esta fazendo a inserção nas duas tabelas/classes, porém eu não sei se elas estão associadas corretamente. Não sei como testar isso.
Ao meu ver, ele esta cadastrando separado, foi o que eu disse, quando acesso funcionários, tem lá os caras que adicionei e quando vou em usuário tem os dados que também foram cadastrados junto.
 
Quando vou tentar exibir o funcionário com os dados completos dá erro. :/
 
Se tiver um tempinho tende olhar os arquivos que anexei.
 
Desde já grato.
 
 

Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 20, 2013, 10:18:21 PM5/20/13
to rail...@googlegroups.com
Oi! Não vou abrir arquivo um por um....faça um favor pra nós: Crie um Gist, ou coloque num pastebin da vida.

Provavelmente eu conheça umas 3 formas de resolver seu problema...mas o trabalho da faculdade é seu, não meu. Né? ;)

Então a gente fica só no apoio moral.

Dica: digite rails console e você poderá fazer vários testes.


2013/5/20 Vinicius Silva <vinip...@gmail.com>

--

Everaldo Gomes

unread,
May 20, 2013, 10:18:49 PM5/20/13
to rail...@googlegroups.com

Vinicius Silva

unread,
May 20, 2013, 10:38:54 PM5/20/13
to rail...@googlegroups.com
 
Tentei postar na ordem para que fique mais fácil a visualização.
 

Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 20, 2013, 10:56:03 PM5/20/13
to rail...@googlegroups.com
Valeu! Arrume lá pra ficar colorido...syntax highlighting.....não é querer ser chato, mas ensinar boas práticas. :)

P.S: Edite o Gist, escolha extensão do arquivo Ruby

2013/5/20 Vinicius Silva <vinip...@gmail.com>

--

Everaldo Gomes

unread,
May 20, 2013, 10:57:07 PM5/20/13
to rail...@googlegroups.com


2013/5/20 Everaldo Gomes <everald...@gmail.com>

Vinicius Silva

unread,
May 20, 2013, 11:07:55 PM5/20/13
to rail...@googlegroups.com
Ai, fiz o que disse, vlw pela a dica... colorido é bem melhor mesmo.
 
Estou usando o form_for e fields_for
 
Quando eu entender melhor o nested_form e o simple_form farei as alterações para ver se vai resolver esse lance.
 

Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 20, 2013, 11:11:23 PM5/20/13
to rail...@googlegroups.com
Vinicius...percebi que na sua base de dados tá cheio de colunas sobrando. Depois remova-as...

Fiz algumas alterações, não sei se funcionam. Já te passo um resumo:



2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Everaldo Gomes

unread,
May 20, 2013, 11:13:15 PM5/20/13
to rail...@googlegroups.com
<%= fields_for :usuario do |u| %>


def new
@funcionario = Funcionario.new
@usuario = @funcionario.build_usuario
end


def create
#####@usuario = Usuario.new(params[:usuario])
@funcionario = Funcionario.new(params[:funcionario])
 
respond_to do |format|
if (@funcionario.save) ###### && (@usuario.save)
format.html { redirect_to @funcionario, notice: "Funcionário adicionado com sucesso." }
else
format.html { render action: "new" }
end
end
end

----------

Note que eu trouxe o accepts_nested_attributes_for e o validates_associated do usuario para o funcionaro


# encoding: UTF-8
class Funcionario < ActiveRecord::Base
attr_accessible :bairro, :cargo, :cep, :cpf, :dt_nasc, :endereco, :nome, :numero, :usuario_id
 
accepts_nested_attributes_for :usuario
 
has_one :usuario
 
validates :bairro, :presence => {:message => "Informe o bairro"}
validates :cargo, :presence => {:message => "Informe o cargo"}
validates :cep, :presence => {:message => "Informe o CEP"}
validates :cpf, :presence => {:message => "Informe o CPF"}
validates :dt_nasc, :presence => {:message => "Informe a data de nascimento"}
validates :endereco, :presence => {:message => "Informe o endereço"}
validates :nome, :presence => {:message => "Informe o nome"}
validates :numero, :presence => {:message => "Informe o número"}
 
validates_associated :usuario
 
 
 
end

Bom...veja aí....fiz tudo de olho.





2013/5/21 Everaldo Gomes <everald...@gmail.com>

Vinicius Silva

unread,
May 21, 2013, 9:17:43 AM5/21/13
to rail...@googlegroups.com
Bom dia! Então fiz as alterações,

A mensagem de erro mudou:

ArgumentError in FuncionariosController#index
No association founs for name 'usuario' . Has it benn defined yet?

app/models/funcionario.rb:5:in '<class:Funcionario>'
app/models/funcionario.rb:2:in '<top (required)>'
app/controllers/funcionarios_controller.rb:2:in '<top (required)>'


Tentarei por essas linhas de erros solucionar o problema, caso o pessoal já tenha uma idéia do que possa ser.

Obrigado.



Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 21, 2013, 9:21:45 AM5/21/13
to rail...@googlegroups.com
Oi! Desculpa, colei o código na ordem errada:

accepts_nested_attributes_for :usuario
 
has_one :usuario

Tem que inverter...o has_one tem que vir primeiro


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 9:23:05 AM5/21/13
to rail...@googlegroups.com
Por questão de aprendizado, já sabemos que quero cadastrar um funcionario com dados de outra tabela usuario. Temos então um controle para o funcionario que fica responsavel pelo new, edit, create, etc...

Eis a dúvida, o usuário tambem deve ter o seu controle com o new,create, etc?

Eu imaginei que se o controle do funcionario fica responsável para passar as informações para a classe Usuario, logo imaginei que não tem necessidade de criar um model para usuario. Estou correto?


Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Vinicius Silva

unread,
May 21, 2013, 9:27:01 AM5/21/13
to rail...@googlegroups.com
Corrigindo, CONTROLE USUARIO e não model usuario


P.S. Farei a mudança.

Você disse que has_one tem que vir primeiro e em seguida accepts_nested...... isso em funcionario.rb

Na classe usuario, ficaria somente belongs_to :funcionario ?




Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 21, 2013, 9:32:06 AM5/21/13
to rail...@googlegroups.com
Isso.


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 9:43:51 AM5/21/13
to rail...@googlegroups.com
Obrigado por esclarecer.

Bom, seguindo os testes: Funcionario cadastrado com sucesso.
No list tem os funcionarios e quando vou em list usuario não foi adicionado.

Lembra daquelas colunas que vc pediu para que eu apagasse? Então ali é para mostrar os dados do usuario ligado à aquele funcionario e deixei em branco propositalmente, para me lembrar de colocar os dados ali, mas primeiro tenho que ter certeza que eles foram criados, para depois exibir de uma vez. Seguindo o seu conselho de fazer o que sei e depois juntar para não desanimar. rsrs

Agora é tentar ver o porque não estou conseguindo inserir em usuario. Vou dar uma olhada aqui e já falo.



Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Renato Ramiro

unread,
May 21, 2013, 9:49:23 AM5/21/13
to rail...@googlegroups.com
Você pode colocar na index de funcionários os atributos do Usuario e vê se realmente está sendo criado o usuário e sendo associado ao funcionário. 


--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Renato Ramiro
Ruby on Rails Developer

Vinicius Silva

unread,
May 21, 2013, 10:11:11 AM5/21/13
to rail...@googlegroups.com
Não esta cadastrando o usuario por nada, somente o funcionario, é como se o _form não estivesse passando os valores relacionados do usuario.
Talvez seja como estou tentando armazenar o dado "#{@usuario.email}"

Editarei o códio e postarei no github


Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Vinicius Silva

unread,
May 21, 2013, 10:20:40 AM5/21/13
to rail...@googlegroups.com
https://gist.github.com/Kurosaki87/89e8535e0eb665caab15

Alterado...


Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 21, 2013, 10:30:33 AM5/21/13
to rail...@googlegroups.com
Vinicius, tem que olhar nos logs.....a distância é difícil de ajudar.

Se me mandar o repositório inteiro, posso dar uma olhada mais à noite, quando tiver um tempo.

Att.

Everaldo


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 10:35:02 AM5/21/13
to rail...@googlegroups.com
Pelo o que eu pude perceber avaliando o meu código é que não esta criando um usuario, pois não tem nenhum método para criá-lo. Por exemplo, temos em controle funcionario os metodos
new @funcionario = Funcionario.new - @usuario = @funcionario.build_usuario

create @funcionario = Funcionario.new(params[:funcionario]) ..... end end end


=================================
Não tem nenhum metodo create de usuario


 

Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 21, 2013, 10:38:05 AM5/21/13
to rail...@googlegroups.com
Eu estava contando com o autosave (salvando funcionario, salva-se usuario).
Posso ter especificado errado, mas pelo menos pro has_many funciona.

É que se você olhar dentro de params[:funcionario], teoricamente tem que ter os dados do usuário ali (se não estiver, o form está errado).

E outra: o accepts_nested_attributes_for e attr_accessible usuario_id servem para isso -> mass assignment.


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 11:06:24 AM5/21/13
to rail...@googlegroups.com
Acredito que o problema esteja mesmo no form, pois eu tirei os campos do usuario e o cadastro foi feito. Ele nem esquenta para o usuario rsrs.

Vou pesquisar e tentar solucionar e mais tarde anexo o prg zipado. Sempre que eu mudar algo, testar eu postarei.

Tenho certeza que esse problema acontece com muitos que estao iniciando.

Amanhã as 18:00 tenho que mostrar ao meu orientador pelo menos uma tela de cadastro funcionando.



Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:

Everaldo Gomes

unread,
May 21, 2013, 11:50:47 AM5/21/13
to rail...@googlegroups.com
Você tá usando aquela gem nested_form....eu não conheço ela. Pode ser que o erro esteja lá.

Mas Vinicius, você precisa aprender a usar o rails console e consultar os logs, para depurar...

Também pode fazer o seguinte. Dentro do controller, por exemplo em:

def create
  fail
end

chame o método fail que ele faz um "dump" na tela das variáveis etc.



2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 11:59:26 AM5/21/13
to rail...@googlegroups.com
Estou usando form_for e fields_for

Dando um pesquisada vi que posso testar a associação com o comando no modelo validates_presence_of :usuario_id e quando tentei cadastrar ele exibe a mensagem "can't be blank"

Estou conseguindo filtar um pouco.

Everaldo Gomes

unread,
May 21, 2013, 12:08:38 PM5/21/13
to rail...@googlegroups.com
É porque o usuário não foi salvo ainda. O certo seria fazer essa validação no Modelo usuário....


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 12:55:12 PM5/21/13
to rail...@googlegroups.com
E como eu posso fazer para que o usuario seja criado e na sequencia os dados do usuário?

A sensação que estou é que declarei a associação de un jeito e estou tentado adicionar de outro. Por isso ele diz que o usuario esta vazio.

Ainda testando... qualquer coisa eu posto aqui.

Everaldo Gomes

unread,
May 21, 2013, 12:57:02 PM5/21/13
to rail...@googlegroups.com
Daquele jeito que eu te mandei era pra funcionar...tem algum pequeno erro que é necessário arrumar. Também, eu fiz de olho...é difícil saber o que faltou. Mais fácil olhar os erros no console e nos logs do que ficar especulando...


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Vinicius Silva

unread,
May 21, 2013, 1:07:20 PM5/21/13
to rail...@googlegroups.com
Postei o trabalho e o diagrama com a parte que esta na documentação. Se tiver um tempinho hoje a noite para dar uma olhada.
pimentaMaluca.rar
Sem título.png

Vinicius Silva

unread,
May 21, 2013, 1:48:08 PM5/21/13
to rail...@googlegroups.com
<%= fields_for :usuario do |u| %>

<div class="control-group">
<%= u.label :email, "E-mail: ", :class => "control-label" %>
<div class="controls">
<%= u.text_field :email, :value => "#{@funcionario.build_usuario.email}" %>
</div>
</div>
A forma que estou passando os atributos do Usuario é assim que se declara? Em vermelho apenas deixei um, a senha e ativo sao semelhantes.

Renato Ramiro

unread,
May 21, 2013, 1:57:34 PM5/21/13
to rail...@googlegroups.com
Vinícius,

Baixei e vi qual era o problema. É preciso colocar a variável f chamando o método fields_for. No caso vai ficar assim: f.fields_for

E você também vai ter que acrescentar mais um atributo no attr_accessible: attr_accessible :usuario_attributes

Altera isso e vê se funciona. Testei aqui e deu certo.


--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Vinicius Silva

unread,
May 21, 2013, 1:58:49 PM5/21/13
to rail...@googlegroups.com
Já deu uma mudada no erro, se liga:

def new
@funcionario = Funcionario.new
@usuario = @funcionario.build_usuario ===removi e coloquei dentro do create====
Agora ele esta testando o validates de usuario, o que nao fazia antes. Na verdade antes ele ignorava usuario

Vinicius Silva

unread,
May 21, 2013, 2:00:26 PM5/21/13
to rail...@googlegroups.com
Vou tentar o que você disse Ramiro.

Renato Ramiro

unread,
May 21, 2013, 2:01:17 PM5/21/13
to rail...@googlegroups.com
Mas deixa o build de usuario no metodo new mesmo. Para fazer funcionar, tirei os validates de usuario no Model Funcionario.

Everaldo Gomes

unread,
May 21, 2013, 2:07:18 PM5/21/13
to rail...@googlegroups.com
Não, tá errado isso.... Faz o build no controller, igual te mandei ontem...


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Everaldo Gomes

unread,
May 21, 2013, 2:08:15 PM5/21/13
to rail...@googlegroups.com
Valeu @Ramiro!!!


2013/5/21 Everaldo Gomes <everald...@gmail.com>

Vinicius Silva

unread,
May 21, 2013, 2:12:20 PM5/21/13
to rail...@googlegroups.com
Renato, quando coloquei o método f.fields_for e pressionei F5 no navegador, os campos email, senha e ativo sumiram.
ficou assim quando segui a sua orientação:

<%= f.fields_for :usuario do |u| %>


<div class="control-group">
    <%= u.label :email, "E-mail: ", :class => "control-label" %>
    <div class="controls">
      <%= u.text_field :email, :value => "#{@funcionario.build_usuario.email}" %>
    </div>
  </div>

  <div class="control-group">
    <%= u.label :senha, "Senha: ", :class => "control-label" %>
    <div class="controls">
      <%= u.password_field :senha, :value => "#{@funcionario.build_usuario.senha}" %>
    </div>
  </div>

  <div class="control-group">
    <%= u.label :ativo, "Ativo?: ", :class => "control-label" %>
      <div class="controls">
        <%= u.check_box :ativo, :value => "#{@funcionario.build_usuario.ativo}" %>
      </div>
  </div>

E o campo :usuario_attributes coloquei dentro do modelo usuário, serioa isso mesmo?

P.S. Então tambem voltarei com o campo @usuario = @funcionario.build_usuario para dentro do new

Testarei. Já volto!!

Renato Ramiro

unread,
May 21, 2013, 2:14:53 PM5/21/13
to rail...@googlegroups.com
attr_accessible :usuario_attributes fica dentro do model funcionario.

Vinicius Silva

unread,
May 21, 2013, 2:22:45 PM5/21/13
to rail...@googlegroups.com
Sim, foi erro de digitação. Coloquei  :usuario_attributes dentro do attr_a.... no model funcionario.

Vou dar uma recapitulada nas dicas, deixando conforme o orientado e farei um teste aqui.. já reporto.

Everaldo Gomes

unread,
May 21, 2013, 2:23:01 PM5/21/13
to rail...@googlegroups.com
Se os campos sumiram na view, provavelmente é porque você tirou o build_usuario do método new do Controller.


2013/5/21 Renato Ramiro <renat...@gmail.com>

Vinicius Silva

unread,
May 21, 2013, 2:31:16 PM5/21/13
to rail...@googlegroups.com
Pronto, dei uma revisada nas dicas, acertei os pontos soltos e funcionou bem! A inserção foi, na boa.

Agora a minha idéia, para ficar mais claro essa associação é na lista de funcionario mostar o email daquele usuario. Lembra aquelas colunas que deixei em branco propositalmente, entao será ali que vou mostrar.

Obrigado pessoal.

Everaldo Gomes

unread,
May 21, 2013, 2:40:31 PM5/21/13
to rail...@googlegroups.com
Vinicius, que bom que funcionou.

Mas as colunas que eu falei eram no banco de dados, na tabela usuario.

Para mostrar o e-mail é fácil. Suponha o seguinte método na classe Funcionario

class Funcionario

  def email_usuario
     usuario.email
  end

end


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Renato Ramiro

unread,
May 21, 2013, 2:47:47 PM5/21/13
to rail...@googlegroups.com
Ou colocar direto na view: funcionario.usuario.email

Vinicius Silva

unread,
May 21, 2013, 2:53:13 PM5/21/13
to rail...@googlegroups.com
Então, pelo que vi no schema, temos: email, senha, ativo, cliente_id, usuario_id, (created_at, updated_at)datetime

os 3 primeiros vao armazenar os dados do usuario. A idéia dos cliente_id e funcionario_id é quando listar todos os usuarios, pela Fk vai pegar os nomes das pessoas, sejam Clientes ou Funcionarios.

A idéia é ter 1 list só funcionario
1 list só cliente
e 1 list com todos os usuarios(clientes e funcionarios)

mas isso vou ver depois. Acredito que nao vai atrapalhar essas colunas no banco, mas se derem problemas eu apago elas.

Vinicius Silva

unread,
May 21, 2013, 4:25:10 PM5/21/13
to rail...@googlegroups.com
Pessoal então, estou conseguindo implementar as outras funcionalidades. Na exibiçao na index de funcionarios é facil exibir os dados.. new e show.html estao prontos.

O que danou-se agora é o edit. Quando clico em editar, aparece todos os campos do funcionario preenchidos e usuario em branco. Como capturar os dados?

Podem me dar uma dica para que eu possa continuar com o editar e atualizar --- até mesmo um link para estudo.

Quando concluir o CRUD eu postarei no github para a galera que tiver algo parecido consultar.



Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:
Boa noite galera! Sou novato em ruby on rails e estou sentindo umas dificuldades no formulário de cadastro.
Tenho uma view cadastro de funcionário, e no mesmo cadastro segue os campos do usuário.
 
Consigo inserir os valores no banco, porém acredito que eles não estejam associados, mesmo dizendo que um pertence ao outro. Posso não estar sabendo usar a linguagem.
 
Vou anexar os:ind
models, Usuário e Funcionário (1 funcionário possui 1 usuário // 1 usuário pertence a 1 funcionário)
controll Funcionário
view _form eex - funcionários

Renato Ramiro

unread,
May 21, 2013, 4:36:19 PM5/21/13
to rail...@googlegroups.com
Tenta tirar todos aqueles value do formulário e vê se funciona?


--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Vinicius Silva

unread,
May 21, 2013, 6:33:25 PM5/21/13
to rail...@googlegroups.com
É interessante aparecer os valores no edit que chama o form - <%= render "form" %>

O meu método -controle-
def edit
    @funcionario = Funcionario.new(params[:id])
end

Acho que é por isso que só vem os dados daquele funcionario sem o usuario. A declaração desse método esta certo?



Em segunda-feira, 20 de maio de 2013 19h10min40s UTC-3, Vinicius Silva escreveu:
Boa noite galera! Sou novato em ruby on rails e estou sentindo umas dificuldades no formulário de cadastro.
Tenho uma view cadastro de funcionário, e no mesmo cadastro segue os campos do usuário.
 
Consigo inserir os valores no banco, porém acredito que eles não estejam associados, mesmo dizendo que um pertence ao outro. Posso não estar sabendo usar a linguagem.
 
Vou anexar os:
models, Usuário e Funcionário (1 funcionário possui 1 usuário // 1 usuário pertence a 1 funcionário)
controll Funcionário
view _form e index - funcionários

Renato Ramiro

unread,
May 21, 2013, 6:44:07 PM5/21/13
to rail...@googlegroups.com
O correto seria @funcionario = Funcionario.find(params[:id])


--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Vinicius Silva

unread,
May 21, 2013, 6:48:22 PM5/21/13
to rail...@googlegroups.com
Num cursinho que estou me baseando tem o editar, porém, o controle edit chama o @funcionário=Funcionário.find(params[:id]) e @departametos=Departamentos.all
Ai na tela você altera os dados do funcionário e diz se ele muda ou não de departamento(tem uma lista).
 
No meu caso não é usuário.all e sim aquele usuário que esta ligado a aquele funcionário.
 
Quando clico no botão editar, eu consigo ver o id que é passado pela url, mas esse id é do funcionário. Então como dizer que ao clicar em editar, ele vai levar o usuário junto com o funcionário?
 
 
Obs. erro de digitação no post anterior é @funcionário=Funcionário.find(params[:id]) e não *new

Vinicius Silva

unread,
May 21, 2013, 7:15:06 PM5/21/13
to rail...@googlegroups.com
hehe essa foi boa, fui testar colocando no def edit @usuário = @funcionário.build_usuário
 
Ai beleza, ao editar, consegui na verdade alterar o funcionário e quando olhei a lista de usuário, ele criou um outro e não alterou o que tinha.. lol ....
 
Aprender a linguagem assim é complicado rsrsrs.... mas estou testando... sei que é algo que não devo fazer.
 
A lógica é que devo de alguma forma dizer o id do usuário.

Douglas Rossignolli

unread,
May 21, 2013, 7:26:04 PM5/21/13
to rail...@googlegroups.com
Amigo atente-se:

se você colocar um método buid, você estará criando/construindo alguma coisa

class Casa
  def self.build params
    Casa.create params //cria um registro no banco
  end
  
  def self.build_update params
    Casa.update_parameters params //atualiza um registro no banco
  end

end

isso é só um conceito básico de como usar o build

mas veja bem como eu tbm posso construir no seu controller

class CasaBO
  def self.criar_casa parametros
       @casa = Casa.new parametros
       @casa.save
       
        if @casa.valid?
          return @casa
        else
          raise Exception.new "Minha casa não está válida"
        end
  end
end


class CasaController 
  def save
    begin
      @casa = CasaBO.criar_casa params
      
       respond_to do |format|
         format.html
         format.json { render :json => casa.to_json}
       end
    rescue Exception => erro
       render :action :new, :flash => erro.message
    end
  end
end

só algo para se pensar isso, eu sei que não ajuda muito o seu problema com esses 2 caras que vc quer gravar ao mesmo tempo







--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Atenciosamente,
Douglas Rossignolli

Vinicius Silva

unread,
May 21, 2013, 7:34:15 PM5/21/13
to rail...@googlegroups.com
Obrigado, Douglas. Compreendi o que disse, e parei pra olhar o conceito do build.
 
Só pra constar, a inserção esta funcionando. A ideia agora é editar o que já tem lá, mas para isso eu preciso trazer todo os atributos das classes.
 
Obrigado pela dica e o exemplo. Pode não ter ajudado agora como você mesmo disse, porém pode me ajudar em uma outra situação. (y)

Douglas Rossignolli

unread,
May 21, 2013, 7:40:31 PM5/21/13
to rail...@googlegroups.com
para vc atualizar bastate você criar  seu form

<%= form_for @funcionario, :url => {:action => :update} do |f| %>
  # campos do funcionario
  <%= f.fields_for :usuario %>
    # campos do usuario
  <% end %>
<% end %>

Vinicius Silva

unread,
May 21, 2013, 7:58:34 PM5/21/13
to rail...@googlegroups.com
Sim, eu já tenho um form criado contendo todos os dados, o que não estou sabendo fazer é declarar o método edit que só esta chamando o funcionário.
Quando passou o mouse por cima do botão EDITAR ele mostra o id do funcionário que vai pela url. Quando clico ele abe a tela editar com os campos do funcionário preenchido porém os campos do funcionário não vão junto. É por isso que acredito que não estou sabendo declarar o edit.
 
def edit
   @funcionário = Funcionário.find(params[:id])
end
 
 
pensei em algo parecido
 
def edit
   @funcionário = Funcionário.find(params[:id])
   @funcionário = Funcionário.usuario.find(params[id])  ====== pensei que assim os dados iriam juntos, mas não é o que acontece. :/
end
 
Ou seja, não é o form.rb ou edit.html e sim o controle que não estou sabendo declarar.
 
Bem como não será diferente com o destroy, pois quando eu deletar o funcionário id35 exemplo, tenho que falar que o id20de usuário também será deletado.
Mas isso só depois que eu conseguir resolver o EDITAR.
 
Se tiver uma dica referente a isso é só falar que estou aqui pra testar.
 
Toda dica e ajuda é bem vinda.

Vinicius Silva

unread,
May 21, 2013, 8:00:53 PM5/21/13
to rail...@googlegroups.com
Corrigindo: campos do funcionário preenchido porém os campos do USUARIO não vão junto

Douglas Rossignolli

unread,
May 21, 2013, 8:15:34 PM5/21/13
to rail...@googlegroups.com
class Pessoa
  has_one :funcionario
end

class Funcionario
  belongs_to :pessoa
end

@pessoa = Pessoa.new
@pessoa.nome = "Doug"
@pessoa.idade = 25
@pessoa.escolaridade = "cursando 2o grau"

@funcionario = Funcionario.new
@funcionario,cargo = "Analista Desenvolvedor"
@funcionario.data_entrada Time.now
@funcionario.save

@pessoa.funcionario = @funcionario

@pessoa.save

@pessoa.funcionario.cargo => # "Analista Desenvolvedor" 

class PessoaController
  def edit
    @pessoa = Pessoa.find params[:id]
    @funcionario = @pessoa.funcionario
  end
end








--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Atenciosamente,
Douglas Rossignolli

Vinicius Silva

unread,
May 21, 2013, 8:45:46 PM5/21/13
to rail...@googlegroups.com
Bem bacana, até testei dessa forma, mas o resultado não foi satisfatório. Talvez você possa entender e ajudar ainda mais se der uma olhadinha por alto no código, principalmente nos métodos do controle edit e update.
 
 
Desde já grato.
 
Atualizado.

Douglas Rossignolli

unread,
May 21, 2013, 8:48:39 PM5/21/13
to rail...@googlegroups.com
<%= u.text_field :email, :value => "#{@funcionario.usuario.email}" %>

<%= u.password_field :senha, :value => "#{@funcionario.usuario.senha}" %>

<%= u.check_box :ativo, :value => "#{@funcionario.usuario.ativo}" %>

testa assim

Douglas Rossignolli

unread,
May 21, 2013, 8:50:30 PM5/21/13
to rail...@googlegroups.com
alias em um formalario de EDIT

vc naum precisa 

<%= u.check_box :ativo, :value => "#{@funcionario.build_usuario.ativo}" %> << naum precisa do value
<%= u.check_box :ativo %> << preenchido automaticamente
--
Atenciosamente,
Douglas Rossignolli

Renato Ramiro

unread,
May 21, 2013, 8:51:11 PM5/21/13
to rail...@googlegroups.com
Ou se quiser tirar os :value => "<alguma_coisa>" também funciona..


Em 21 de maio de 2013 21:48, Douglas Rossignolli <douglas.r...@gmail.com> escreveu:



--

Everaldo Gomes

unread,
May 21, 2013, 8:56:16 PM5/21/13
to rail...@googlegroups.com
Vinicius, eu não falei nada porque o @RenatoRamiro já havia respondido antes. Bastava tirar aqueles values.

Perceba que ele enviou 2 vezes a mensagem!!! :)

Segue a dica dele. ;)


2013/5/21 Renato Ramiro <renat...@gmail.com>

Vinicius Silva

unread,
May 21, 2013, 9:07:51 PM5/21/13
to rail...@googlegroups.com
É eu tinha ignorado devido ao que eu li na apostila: "O atributo :value é preenchido caso @funcionario contenha valores, no caso de uma edição, ou é apresentado em branco no caso de uma inclusão." E respondi afirmando que seria interessante ter os valores dos campos na hora da edição, mas seguirei o conselho de remover os values,
 
Bom, não ignorarei mais e farei as alterações, postarei essa mudança no github.
 
Darei uma revisada nos posts, desde que dei início ao edit e já dou um retorno.
 
GitHub atualizado

Everaldo Gomes

unread,
May 21, 2013, 9:09:48 PM5/21/13
to rail...@googlegroups.com
Mas fique tranquilo Vinicius...hoje você sofre...depois de amanhã você se torna um expert. ;)




2013/5/21 Vinicius Silva <vinip...@gmail.com>

Renato Ramiro

unread,
May 21, 2013, 9:11:09 PM5/21/13
to rail...@googlegroups.com
Mas o sofrimento não acaba, só diminui :P

Everaldo Gomes

unread,
May 21, 2013, 9:13:52 PM5/21/13
to rail...@googlegroups.com
Mas é ruim sofrer esperando ganhar o diploma da faculdade e sem dinheiro no bolso.
Depois que começa a ganhar uma graninha, fazer os sistemas etc. se torna mais suportável. :P

É, mas tem horas que eu tenho vontade de largar isso tudo e fazer administração ou psicologia.
De certa forma, saber programar é uma "maldição". A gente se sente no dever moral de fazê-lo...afinal, há tão poucos de nós pelo mundo.


2013/5/21 Renato Ramiro <renat...@gmail.com>

Vinicius Silva

unread,
May 21, 2013, 9:22:58 PM5/21/13
to rail...@googlegroups.com
hehe Opa,,, vou torcer então para que chegue logo quinta feira =) rsrsrs
 
Gente obrigado pela paciência e atenção.
 
Fiz o orientado e teria dado certo caso o #update estivesse implementado. Implementarei e reporto o resultado.
 
Bom enquanto isso, percebi um pequeno problema com a minha data, por ter removido o value no form dt_nasc ele já não coloca os / automático e sem contar que agora esta aceitando letras. Bom, mas por enquanto isso é o de menos, mas se tiverem alguma solução é só falar. Para vocês terem uma noção, a data sempre me perturbou devido ao padrão brasil.
 
Em fim, já volto.

Everaldo Gomes

unread,
May 21, 2013, 9:29:24 PM5/21/13
to rail...@googlegroups.com
:)

Baixe e coloque este arquivo dentro de config/locales


E altere o config/application.rb (e reinicie o servidor)

    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
    config.i18n.default_locale = :"pt-BR"




2013/5/21 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 21, 2013, 9:42:16 PM5/21/13
to rail...@googlegroups.com
hehe Everaldo não vou deixar de lado sobre a data, copiei e colei aqui em texto para que eu possa ver depois.
 
Bom, para concluir mais uma parte do CRUD vamos para o update. Bom na tela editar quando eu confirmo os campos alterados, exibe essa mensagem de erro.
 
SystemStackError in FuncionariosContrller#update
stack level too deep
 
Sabem o que pode ser?
 
O método update esta exatamente como postei no github.
 
Postarei a tela com a mensagem. De todos os erros esse não tenho nem noção rsrs :(
 
Atualizado GitHub

Everaldo Gomes

unread,
May 21, 2013, 9:51:40 PM5/21/13
to rail...@googlegroups.com
Tem um erro de digitação aqui, não?

FuncionariosContrller#update

Tá faltando um "o"


2013/5/21 Vinicius Silva <vinip...@gmail.com>

--

Everaldo Gomes

unread,
May 21, 2013, 9:54:10 PM5/21/13
to rail...@googlegroups.com
Provavelmente você tem alguma validação circular....aí fica validando de um para o outro. Só pode ser isso...deve ter entrado em loop.


2013/5/21 Everaldo Gomes <everald...@gmail.com>

Ricardo Franco

unread,
May 21, 2013, 9:54:59 PM5/21/13
to rail...@googlegroups.com
Tem validação "cíclica" aí.
Deve ser em "funcionário" e "usuário".
Ou valida um ou outro, não os dois.
--

Ricardo Franco Andrade

( Web | Desktop | Game ) Developer

email: ricard...@gmail.com
phone: +55 (86) 9436 0830
skype: ricardo.krieg


Vinicius Silva

unread,
May 21, 2013, 9:55:26 PM5/21/13
to rail...@googlegroups.com
Pessoal, agora vou sair pra jantar e esfriar um pouco a cabeça, estou desde manhã vendo isso. Queria muito continuar, pois tenho a sensação que não dará tempo de terminar esse projeto, mas estou cansado. Cheguei agora numa fase que não estou entendendo mais nada. Em fim, amanhã acordarei bem e se Deus quiser e vocês me ajudando eu termino esse CRUD todo e levo para o orientador amanhã, porque tenho aula. Bom a minha sorte é que falta só terminar o TCC para pegar o diploma.
 
Se tudo der certo pedirei para alguém filmar a apresentação e postarei no youtube, ai passo o link para vocês, afinal, parte do que vou apresentar teve um conselho de cada um de vocês.
 
Obrigado e até amanhã.

Ricardo Franco

unread,
May 21, 2013, 9:55:44 PM5/21/13
to rail...@googlegroups.com
hehe, na mesma hora :P

validates_associated :usuario
validates_associated :funcionario

Deixa só um.

Everaldo Gomes

unread,
May 21, 2013, 9:59:15 PM5/21/13
to rail...@googlegroups.com
Sim (na mesma hora), tira o 


validates_associated :funcionario
da classe Usuario


Boa sorte aí!!!! Eu já tinha dito pra você tirar isso...você foi lá e colocou de novo. Teimoso rs.


2013/5/21 Ricardo Franco <ricard...@gmail.com>

Vinicius Silva

unread,
May 22, 2013, 9:49:30 AM5/22/13
to rail...@googlegroups.com
Bom dia pessoal. Estou aqui novamente. Removi validates_associated :funcionário.... e funcionou --- saber que repeti a linha de comando, quando era pra deixar sem e perder um tempão pra resolver foi desagradável rsrsrs, mas, é aquilo que falaram ontem, sofre muito hoje para depois passar a sofrer menos. hehehe
 
:( teimoso hehe -- eu precisava descansar um pouco.
 
Agora, finalmente para concluir o CRUD completo, faltta o Destroy.
 
Beleza, já tenho o método destroy implementado. Quando clico em EXCLUIR ele passa o id pela url e exclui o funcionário, volta para a lista e é exibido a linha em branco com os dados daquele funcionario com os dados em branco do usuario. Afinal foi excluído.
 
Mas o problema é:
 
Quando vou na lista de usuários, o usuário que era daquele funcionário ainda permanece no banco. Na lista de usuário, também tenho implementado o destroy, quando clico ele remove.
 
Então, como remover pelo funcionário e quando consultar usuário ele tenha sido excluído também.
 
Obs. controle usuário somente tem:
 
def index            =====para mostrar a lista dos usuários no sistema=======
   @usuários = Usuário.order("id")
end
 
def destroy            =====para deletar o usuário========
   @usuário = Usuário.find(params[:id])
   @usuário.destroy
   redirect_to usuários_url
end
 
 
Bom como eu tinha falado, terei 3 list: funcionário, cliente e usuários_com_todos_os_(func e clie).
O adm será o único que terá acesso ao list usuários, e se ele quiser excluir um usuário com ele vai junto os dados, no meu caso o funcionário, que é o que esta sendo implementado.
 
Mas inicialmente apenas excluindo o usuário pelo funcionário já estaria ÓTIMO.
 
Porque depois disso o meu próximo passo é implementar Cliente me baseando no código do Funcionário.
 
 
Desculpe pelo texto enorme, é pra explicar bem.
 
Bom dia, pessoal!!

Vinicius Silva

unread,
May 22, 2013, 11:05:22 AM5/22/13
to rail...@googlegroups.com
Vou pensar nisso direitinho, conversarei com o orientador sobre o usuário, pois o campo ativo, pode informar se ele fará uma encomenda ou não.
 
Vou partir para o próximo passo. CRUD cliente, esse vai ser um pouco mais complicado pois tenho herança.

Renato Ramiro

unread,
May 22, 2013, 11:07:44 AM5/22/13
to rail...@googlegroups.com
Vinicius,

Para excluir o usuario do funcionário, é só preciso colocar um dependent:destroy no has_one..

Ficaria assim: model funcionario.rb
has_one :usuario, dependent: :destroy



--
--
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
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--

Everaldo Gomes

unread,
May 22, 2013, 11:27:14 AM5/22/13
to rail...@googlegroups.com
Vinicus, ouça os conselhos do @RenatoRamiro. :)

Eu ia dizer o mesmo...


2013/5/22 Renato Ramiro <renat...@gmail.com>

Vinicius Silva

unread,
May 22, 2013, 11:28:07 AM5/22/13
to rail...@googlegroups.com
Valeu Renado. Se liga dei uma pesquisada, pois nem fazia ideia que poderia usar Associations::ClassMethods.
 
Percebi também que tenho outras opções além do :dependent => :destroy
 
exemplos
has_one :credit_card, :dependent => :destroy  # destroys the associated credit card
has_one :credit_card, :dependent => :nullify  # updates the associated records foreign
                                              # key value to NULL rather than destroying it
has_one :last_comment, :class_name => "Comment", :order => "posted_on"
has_one :project_manager, :class_name => "Person", :conditions => "role = 'project_manager'"
has_one :attachment, :as => :attachable
has_one :boss, :readonly => :true
has_one :club, :through => :membership
has_one :primary_address, :through => :addressables, :conditions => ["addressable.primary = ?", true], :source => :addressable
 
 
Foi bom saber disso, pode me ajudar futuramente em outros casos.

Vinicius Silva

unread,
May 22, 2013, 1:56:39 PM5/22/13
to rail...@googlegroups.com
Boa tarde Everaldo.
 
Acessei, copiei o texto salvei com o nome pt-BR.yml
Coloquei esse arquivo dentro da pasta referida. Reparei que lá existe um en.yml   ====deixo esse arquivo quieto ou removo?======
 
E adicionei as linhas em config/application.rb ..

Everaldo Gomes

unread,
May 22, 2013, 2:00:03 PM5/22/13
to rail...@googlegroups.com
Pode deixar o outro arquivo quieto. Notou alguma diferença, mensagens traduzidas?


2013/5/22 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 22, 2013, 2:14:29 PM5/22/13
to rail...@googlegroups.com
Ops! Deu um erro aqui.
 
I18n: :InvalidLocaleData in FuncionariosController#new
can not load translations from: C:/.../config/locales/pt-BR.yml: #<Psych: :SyntaxError: (C:/.../config/locales/pt-BR.yml): invalid trailling UTF-8 octet at line1 column1
 
 
Será que é porque no meu controle na primeira linha eu tenho declarado # encoding: UTF-8 ?
 
E com esse 'arquivo yml' e 'configuração' não terei problemas com a data em dd/mm/YYYY tanto para armazenar quando para exibir? Implementei uma mascara JQuery para a data e esta funcionando bem.
 
Obrigado.

Everaldo Gomes

unread,
May 22, 2013, 2:21:56 PM5/22/13
to rail...@googlegroups.com
Oi!

Troque:

# encoding: UTF-8 ?

para:

# encoding: utf-8

Não sei o que é esse erro...

Acho que a data vai funcionar, não lembro de cabeça agora. :P


2013/5/22 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 23, 2013, 9:23:16 AM5/23/13
to rail...@googlegroups.com
Bom dia pessoal, estou aqui novamente.
Ontem um pouco ausente devido a faculdade.
 
Como posso ver o log de erro / dos erros?
 
Por exemplo, agora a minha 127.0.0.1:3000/funcionários esta exibindo:
 
We're sorry, but something went wrong.

Vinicius Silva

unread,
May 23, 2013, 9:33:29 AM5/23/13
to rail...@googlegroups.com
Para questão de aprendizado quem puder falar como ver o log agradeço.
 
E sobre o problema, era o meu controle que estava com acentos e tive que colocar # encoding: utf-8 - voltou ao normal.
 
E sobre a faculdade ontem, o orientador disse que eu tenho que entregar esse projeto em 3 semanas, ou então só no próximo semestre. Ferrou-se!!!
Obrigado pessoal.

Everaldo Gomes

unread,
May 23, 2013, 9:49:11 AM5/23/13
to rail...@googlegroups.com
Oi @Vinicius. Você usa Linux? No Windows eu não sei ver os logs.

Mas eles estão na pasta log/.

No ambiente de desenvolvimento o arquivo é log/development.log.

Eu costumo fazer assim (no Linux): $tail -f log/development.log

Mas o próprio console onde eu lanço o Webrick também mostra os logs...





2013/5/23 Vinicius Silva <vinip...@gmail.com>

Renato Ramiro

unread,
May 23, 2013, 11:06:29 AM5/23/13
to rail...@googlegroups.com
Vinicius,

Quando vc escreveu a rota, não sei se digitou errado, mas tem um acento em funcionários. Não sei se tem algum problema em colocar acentos nas rotas.

Mas tenta sem o acento: 127.0.0.1:3000/funcionarios

Vinicius Silva

unread,
May 23, 2013, 11:31:42 AM5/23/13
to rail...@googlegroups.com
Everaldo - Uso Windows e vi que dentro do meu projeto tem um arquivo log\development.log --- beleza, olhar o log ajuda muito.
 
Renato - Digitei a rota certa, normalmente quando escrevo aqui, o autocorreção vem acentuando as palavras, e esta funcionando normalmente o CRUD de funcionários.
Esta etapa esta quase pronta, só não finalizei, pois, ontem o professor afirmou que em Usuário devo ter um tp_usuario:string{15} e que na tela de cadastro (_form) funcionário deveria ter um select Atendente e Gerente - 2 opções.
 
Declarei na model, adicionei o campo na tabela, mas estou com uma dúvida na declaração do _form em dizer que aquela opção escolhida será o valor que vai pelo atributo tp_usuario.
 
Então fiz:
 
<div class="control-group">
    <%= u.label :tp_usuario, "Tipo de usuário: ", :class => "control-label" %>
    <div class="controls">
         <%= u.select :tp_usuario %>
              <option>Atendente</option>
              <option>Gerente</option>
         </select>
    </div>
</div>
 
Ainda não testei, mas isso estaria correto?
 
OBS.: No próximo comentário atualizarei o github.

Everaldo Gomes

unread,
May 23, 2013, 11:37:06 AM5/23/13
to rail...@googlegroups.com
O código está errado, mas não vou ter tempo de te explicar agora.

Você pode olhar no Railscasts.com ou em api.rubyonrails.org



2013/5/23 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 23, 2013, 1:36:20 PM5/23/13
to rail...@googlegroups.com
lol finalmente consegui...
 
<div class="control-group">
<%= u.label :tp_usuario, "Tipo de Usuario: ", :class => "control-label" %>
<div class="controls">
<%= u.select(:tp_usuario, options_for_select([['Atendente', 'Atendente'], ['Gerente','Gerente']])) %>
</div>
</div>
 
vi que não é a única opção, mas por hora esta ótimo.
 
Com isso já consigo implementar o sexo \o/

Vinicius Silva

unread,
May 24, 2013, 1:59:32 PM5/24/13
to rail...@googlegroups.com
Quero agradecer a todas as pessoas que ajudaram nesse CRUD

Obrigado Renato Ramiro, Everaldo Gomes

GitHub atualizado: https://gist.github.com/Kurosaki87/89e8535e0eb665caab15

==========================FECHADO===========================

Darei incício ao CRUD ClienteFisico, que herda de Cliente que possui Usuario.
Quando aparecerem as dúvidas eu posto aqui...

GitHub com essa nova fase de herança: https://gist.github.com/Kurosaki87/5645285

Everaldo Gomes

unread,
May 24, 2013, 2:00:51 PM5/24/13
to rail...@googlegroups.com
Estamos aqui pra isso. Sempre tem alguém pra ajudar.

Bom trabalho aí!


2013/5/24 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 24, 2013, 5:06:16 PM5/24/13
to rail...@googlegroups.com
Pessoal, estou com uma dúvida na herança e antes de continuar pesquisando, gostaria de saber com vocês mais experiente se isso é possível ou qual seria a forma mais correta de se implementar.

Iria explicar o diagrama mas anexei e vou direto a pergunta.


Pelo diagrama, quem faz a encomenda é a classe cliente. Mas ela saberia especificar se a classe filha é Fisica ou Juridica? Lembrando que o Cliente é a classe pai.

Vendo pelo lado lógico. O cliente fisico tem os atributos do pai que por sua vez esta associado a um usuario, logo não seria esse cliente fisico que faria a encomenda, já que ele possui todos os atributos herdados?

Para mim esse diagrama esta errado, dificultando o meu entendimento na implementação.
diag.jpg

Everaldo Gomes

unread,
May 24, 2013, 5:15:44 PM5/24/13
to rail...@googlegroups.com
Mas o Cliente não é uma classe abstrata?

Quem faz a encomenda não é o Cliente Físico ou Jurídico?

Tem que ver...cada caso é um caso. O que é necessário para fazer uma encomenda? Os documentos?




2013/5/24 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 24, 2013, 5:38:39 PM5/24/13
to rail...@googlegroups.com
Mas o Cliente não é uma classe abstrata?
Não, cliente não é uma classe(modelo) abstrata, pois segundo o diagrama é ele que vai fazer a encomenda. O que pra mim esta errado.


Quem faz a encomenda não é o Cliente Físico ou Jurídico?
Sim, como pessoas existentes quem faz a encomenda é o Cliente Fisico ou Juridico. Somente esses dois nessa parte do diagrama.


O que é necessário para fazer uma encomenda? Os documentos?
Para fazer uma encomenda é necessário que tenha previamente um cadastro no site. O que vai diferenciar um do outro é o CPF ou CNPJ.


Uma solução que vou passar ao orientador é que não exista a classe Cliente e respectivos atributos iriam para as classes filhos, logo ficaria assim:
ClienteFisico :cpf, :dt_nasc, :sexo, :nome, :tel_celular, :tel_convencional
ClienteJuridico :cnpj, :incr_estadual, :responsavel, :nome, :radio, :tel_empresarial

Cada uma dessas classes estaria associado a um usuario, e justamente elas fariam a encomenda. Pronto uma coisa simples e funcional.

O que acha?


2013/5/24 Vinicius Silva <vinip...@gmail.com>
...

Everaldo Gomes

unread,
May 24, 2013, 5:41:16 PM5/24/13
to rail...@googlegroups.com
Estou pensando....acho que quem faz a encomenda é o Usuário!!?

O que acha?




2013/5/24 Vinicius Silva <vinip...@gmail.com>

Vinicius Silva

unread,
May 24, 2013, 6:12:15 PM5/24/13
to rail...@googlegroups.com
Sim. Pensando em lógica, Usuario belongs_to Cliente que faz Encomenda. Usuario belongs_to Funcionario que faz Encomenda.
Logo se Cliente e Funcionario has_one Usuario, significa que todos os Usuarios fazem encomenda. Se não eles nem conseguem entrar no sistema.

Boa... tenho que levar essa ideia ao orientador. Além de ser lógico, vai facilitar a implementação.

Valeu!


2013/5/24 Vinicius Silva <vinip...@gmail.com>


2013/5/24 Vinicius Silva <vinip...@gmail.com>


2013/5/24 Vinicius Silva <vinip...@gmail.com>



2013/5/23 Vinicius Silva <vinip...@gmail.com>
Leia nossa política de uso: <a href
...
Reply all
Reply to author
Forward
0 new messages