Jump to content
paulorof

Dúvidas com Nested Attributes

Recommended Posts

Bom dia a todos.

Tenho o seguinte problema com nested attributes no rails 4.

Criei um modelo Pessoa onde pessoa tem um endereço.

Até aí tudo bem, pois com as configurações básicas do nested attributes ele cria aninhado a Pessoa e o endereço no banco de dados e associa o id do endereço a pessoa.

Sendo que eu posso ter mais de uma pessoa para o mesmo endereço, então eu gostaria de que antes de salvar no banco o objeto Endereço fosse pesquisado, se já existe um endereço com os dados que eu informar como único, retorna o ID do endereço para associar a Pessoa, se não ele faz o fluxo que já é feito de criar um novo registro e associar a pessoa.

Alguém conhece alguma forma de fazer isso usando o nested attributes?

 

Tabela Pessoa: nome, cpf, endereco_id

 

Tabela endereco:  logradouro, numero, cep, municipio

 

Código Fonte

 

class Pessoa < ActiveRecord::Base
    belongs_to :endereco
    accepts_nested_attributes_for :endereco
end

 

class Endereco < ActiveRecord::Base
    has_many :pessoas
    accepts_nested_attributes_for :endereco
end
<%= form_for(pessoa, html: { class: 'form-horizontal' }) do |f| %>
	<div class="form-group">
	  <%= f.label :nome, class: 'col-sm-2 control-label' %>
	  <div class="col-sm-8">
	    <%= f.text_field :nome, class: 'form-control maiusculo' %>
	  </div>
	</div>
	<div class="form-group">
	  <%= f.label :cpf, class: 'col-sm-2 control-label' %>
	  <div class="col-sm-8">
	    <%= f.text_field :cpf, class: 'form-control maiusculo' %>
	  </div>
	</div>

	<%= f.fields_for :endereco do |en| %>
      <div class="form-group">
        <%= en.label :logradouro, class: 'col-sm-2 control-label' %>
        <div class="col-sm-8">
          <%= en.text_field :logradouro, class: 'form-control maiusculo' %>
        </div>
      </div>
			<div class="form-group">
        <%= en.label :numero, class: 'col-sm-2 control-label' %>
        <div class="col-sm-8">
          <%= en.text_field :numero, class: 'form-control maiusculo' %>
        </div>
      </div>
			<div class="form-group">
        <%= en.label :cep, class: 'col-sm-2 control-label' %>
        <div class="col-sm-8">
          <%= en.text_field :cep, class: 'form-control maiusculo' %>
        </div>
      </div>
			<div class="form-group">
        <%= en.label :municipio, class: 'col-sm-2 control-label' %>
        <div class="col-sm-8">
          <%= en.text_field :municipio, class: 'form-control maiusculo' %>
        </div>
      </div>
  <% end %>
	<div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <%= f.submit nil, class: 'btn btn-primary' %>
      <%= link_to I18n.t('.cancel', default: I18n.t("helpers.links.cancel")),
                  pessoas_path, class: 'btn btn-default' %>
    </div>
  </div>
<% end %>

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.