Rails nested form on HABTM: how to prevent duplicate entry?

后端 未结 2 1252
被撕碎了的回忆
被撕碎了的回忆 2020-12-21 23:21

I have simple app with 3 tables in DB and \'many-to-many\' relationships.

# Model Employee
class Employee < ActiveRecord::Base
   has_and_belongs_to_many          


        
2条回答
  •  执笔经年
    2020-12-22 00:04

    You can use rails validation to check uniqueness of record.

    In your model phonenumber.rb put following line,

    validates_uniqueness_of :column_name
    

    It will ensure that Phonenumber will have unique phone_numbers only.

    Now in controller you can check phone_number from params and if number is already exist then we will delete nested attributes fron params so that Phonenumber record wont generate.

     def create
       @phone_number = Phonenumber.where(:number=>params[:employee][:phonenumber][:number])
       if @phone_number.any?
          params[:employee].delete(:phonenumber)
          @employee = Employee.new(params[:employee])
          if @employee.save?
            @employee.phonenumber = @phone_number.first
            redirect_to :action => :index
          else
            render "new"
          end
       else
         @employee = Employee.new(params[:employee])
         @employee.save ? (redirect_to :action => :index) : (render "new")
       end
     end
    

提交回复
热议问题