Rails 4 Update Nested Attributes and avoid Duplicate Information -


i create application whit nested form.

in model bur_audit.

    class buraudit < activerecord::base      has_many :personal_adits, dependent: :destroy     belongs_to :public_entity     belongs_to :taking     belongs_to :area     before_create :validar_entidad_area_reca     after_save :llena_tabla_per_buro_audit     accepts_nested_attributes_for :personal_adits, allow_destroy: true       quincena = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"]     calendario = ((yr=date.current.year)-7..yr).to_a      include informixqueryhelper      def validar_entidad_area_reca         entidad = self.public_entity_id         puts entidad         self.entidad_publica = entidad         e = publicentity.find_by "entidad_publica = " + entidad.to_s           id = e.id         self.public_entity_id = id          area = self.area_id         puts area         self.departamento = area         = area.find_by "area = " + area.to_s           id = a.id         self.area_id = id          reca = self.taking_id         puts reca         self.recaudacion = reca         r = taking.find_by "recaudacion = " + reca.to_s           id = r.id         self.taking_id = id      end     def llena_tabla_per_buro_audit         id = self.id         dependencia = self.entidad_publica         area = self.departamento         recaudacion = self.recaudacion         calendario = self.calendario         quincena = self.quincena         bur_audit_empleado_horario(dependencia,area,recaudacion,id, calendario, quincena)     end  end 

before_safe have make connection informix server , run query information need in relation personal adits.

the information save when update attibutes personal adits duplicate records on table.

in controller im trying this

    # encoding: utf-8 class burauditscontroller < applicationcontroller   include informixqueryhelper    before_action :set_bur_audit, only: [:show, :edit, :update, :destroy]    respond_to :html, :xml, :json, :pdf, :xls, :csv    def index     @bur_audits = buraudit.all     respond_with(@bur_audits)   end    def show     respond_with(@bur_audit)   end    def new     @bur_audit = buraudit.new     respond_with(@bur_audit)   end    def edit   end    def create     @bur_audit = buraudit.new(bur_audit_params)     @bur_audit.save     respond_with(@bur_audit)   end def update     @bur_audit.update(update_bur_audit_params)     respond_with(@bur_audit)   end    def destroy     @bur_audit.destroy     respond_with(@bur_audit)   end    def for_auditoria_burocrata     puts("preparandose para lanzar")     bur_audit_empleado_horario(params[:dependencia], params[:area], params[:recaudacion])     render json: @bur_empleado   end    def for_entidad_area_id      sql = "select a.id, a.description             areas              a.status = 'a'             , a.entidad_publica = '#{params[:public_entity_id]}'             , a.fecha_efectiva in (select max(fecha_efectiva)                                   areas                                   a.area = area)             order description"     @area = activerecord::base.connection.select_rows(sql)     @area.map{|id,description|}     respond_to |format|       format.json  { render :json => @area }     end     end   private     def set_bur_audit       @bur_audit = buraudit.find(params[:id])     end      def bur_audit_params       params.require(:bur_audit).permit(:id, :titulo, :public_entity_id, :entidad_publica, :area_id, :departamento, :taking_id, :recaudacion, :quincena, :calendario , personal_adits_attributes:[:id, :building_id, :labora_true, :absence_cause_id, :area_funcional, :tiempo_area, :per_cargo, :escolaridad, :cumple_perfil, :reg_asistencia, :horario, :viaja, :frecuencia, :jefe_directo, :funsiones, :regularizado, :observaciones, :sueldo, :_destroy])     end      def update_bur_audit_params       params.require(:bur_audit).permit(personal_adits_attributes:[:id, :bur_audit_id ,:building_id,:labora_true,:absence_cause_id,:area_funcional,:tiempo_area,:per_cargo,:escolaridad,:cumple_perfil,:reg_asistencia,:horario,:viaja,:frecuencia,:jefe_directo,:funsiones,:regularizado,:observaciones,:sueldo, :_destroy])     end 

someone know way avoid duplication of information.

it appears comments parameters being passed in post action causing duplicate record created. params mentioned in comment are:

parameters: {"utf8"=>"✓", "authenticity_token"=>"xwnmgrolayrynhsizpbnuk4ip589ozqnddilcusqimc=", "button"=>"", "bur_audit"=>{"titulo"=>"prueba de duplicidad", "public_entity_id"=>"204", "area_id"=>"3011000005001", "taking_id"=>"14", "calendario"=>"2015", "quincena"=>"16", "personal_adits_attributes"=>{"0"=>{"building_id"=>"", "labora_true"=>"si", "absence_cause_id"=>"", "area_funcional"=>"", "tiempo_area"=>"", "per_cargo"=>"", "escolaridad"=>"", "cumple_perfil"=>"", "reg_asistencia"=>"", "horario"=>"8:00-16:00 l-v", "viaja"=>"", "frecuencia"=>"", "jefe_directo"=>"", "funsiones"=>"", etc

notice part starts "personal_adits_attributes"=>{"0"=>. indicates me array of personal_adits fields can passed in. continuation shows "1"=> later in block.

my assumption information being posted form has multiple personal_adits nested in it, created manually user (for example clicking "add personal adit" button). there no sign of personal_adit being instantiated in bur_audits_controller new action or in initialization of buraudit model, guessing manual action creating multiple items.

alternatively, bur_audit/_form.html.erb file instantiating multiple personal_adit instances prior showing nested form.

to validate, add following before form tag @bur audit in form partial.

i expect number greater one, show personal_adit list created. if 0 or 1 dig nested forms see when created. potentially there ui activity causing multiple nested personal_adit forms created. example $(document).on('click'... being registered twice , therefore leading double events single user action.

feel free edit answer or original question additional information if helps.


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -