2017-03-21 4 views
0

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 

答えて

0

しようとしないです:あなたができるあなたの顧客モデル(customer.rb)で

顧客モデル

before_save :check_phone 

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

が動作していません。電話番号があれば同じデータを使いたいです。 – Kgb

+0

お客様の同じデータを使用するとどういう意味ですか? – puneet18

+0

電話番号が存在することは、DBまたはフィールドに存在することを意味しますか? – puneet18

0

do

validates :phone_number, presence: true 

または

validates_presence_of :phone_number 
0

方法first_or_createメソッドを使用してください、サンプルは、ドキュメントへ

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

参照の下に掲載されていますRuby Doc for First_or_Create

関連する問題