2017-02-03 11 views
-1

投稿されたフォームフィールドに値がある場合のみ、更新時にrailsアプリケーションを検証する方法は?Railsフォームフィールドに値がある場合にのみ、更新時に検証

送信されたフォームフィールドが空白の場合は、検証しないでください。

あなたはそれのために、クライアント側の検証を使用することができます

validates_presence_of :search_card, on: :update 

def search_card 
    card = Card.find_by_barcode(self.barcode) 
    if card.nil? 
     errors.add(:invalid_card, ", Please provide another card") 
    end 
    end 
+0

http://guides.rubyonrails.org/active_record_validations.html#allow-blankを – Iceman

+0

それは動作しません!!!! –

+0

感嘆符が4つもありませんか? – Iceman

答えて

0

User.rb。詳細はhttps://github.com/DavyJonesLocker/client_side_validationsを参照してください。また、callback(before_create)を使用して値を検証します。

0

バーコードが変更された場合は、before_validationコールバックにsearch_cardメソッドを起動する必要があり

更新:

before_validation :search_card, on: :update, if: Proc.new { |u| u.barcode_changed? } 

旧答え(間違った)

Y 文の場合を使用する必要があります。 Procこのお試しください:

validates_presence_of :search_card, on: :update, if: Proc.new { |u| u.search_card.present? } 
+0

それは働かなかった。私の場合はちょっと違います。 2つの形式があります.1つはユーザープロファイルを更新する方法で、もう1つはバーコードのみを更新する方法です。したがって、更新要求がユーザープロファイルのフォームを編集する場合は、検証なしで更新する必要があり、更新要求がバーコードを更新する場合は、上記の式で検証する必要があります。 –

+0

@SantoshAryal申し訳ありませんが、私の最初の答えは完全に間違っています。私はいくつかの更新を行ったので、新しいものを試すことができます。 –

+0

ありがとうpan.goth私はあなたの推薦を使用しましたが、カードモデルのバーコードを検証せずにバーコードを更新することができました。 –

関連する問題