Rails通过参数验证

时间:2017-03-21 08:40:56

标签: ruby-on-rails

我的客户模型有first_name,last_name和phone_number。 在创建用户时,我想使用phone_number验证if phone_number存在然后使用相同的数据,否则创建新的客户。 我怎么能这样做?

def create
    @customer = Customer.new(customer_params)
    respond_to do |format|
      if @customer.save
        format.html { redirect_to @customer, notice: 'Customer was successfully created.' }
        format.json { render :show, status: :created, location: @customer }
      else
        format.html { render :new }
        format.json { render json: @customer.errors, status: :unprocessable_entity }
      end
    end
  end 

我尝试了这个,但它并不完美

 def check_presence
     params[:phone_number].exists?
    end

    def validate_presence
     if !check_presence
       Customer.new
     end
    end

3 个答案:

答案 0 :(得分:0)

尝试以下代码:

客户模式

before_save :check_phone

def check_phone
  Customer.exists?(phone: self.phone) ? false : true
end

答案 1 :(得分:0)

在您的客户模型(customer.rb)中,您可以

validates :phone_number, presence: true

validates_presence_of :phone_number

答案 2 :(得分:0)

请使用方法first_or_create方法,下面发布了一个示例

@customer = Customer.where(:phone_number => phone_number).first_or_create(customer_params)

参考doc:Ruby Doc for First_or_Create