如果提交的表单字段有值,如何在更新时验证rails app?
不应验证提交的表单字段是否为空。
User.rb
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 :(得分:1)
<强>更新强>
如果条形码已更改,则应在 before_validation 回调中触发 search_card 方法:
before_validation :search_card, on: :update, if: Proc.new { |u| u.barcode_changed? }
旧答案(错误)
您应该在 Proc 中使用 if 语句。试试这个:
validates_presence_of :search_card, on: :update, if: Proc.new { |u| u.search_card.present? }
答案 1 :(得分:0)
您可以使用客户端验证。有关详细信息,请参阅https://github.com/DavyJonesLocker/client_side_validations
。另外,使用callback(before_create)
验证值。