我的客户模型有first_name,last_name和phone_number。在创建用户时,我想使用 phone_number 验证如果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
在您的客户模型中(customer.rb(,您可以这样做
validates :phone_number, presence: true
或
validates_presence_of :phone_number
尝试以下代码:
客户模型
before_save :check_phone
def check_phone
Customer.exists?(phone: self.phone) ? false : true
end
请使用方法first_or_create
方法,下面发布一个示例
@customer = Customer.where(:phone_number => phone_number).first_or_create(customer_params)
参考文档:Ruby Doc for First_or_Create