簡體   English   中英

您如何編寫Rails驗證,該驗證以是否在表單中填寫其他字段為條件?

[英]How do you write a rails validation that is conditional upon if other fields were filled out within a form?

我正在嘗試在電子商務網站的結帳頁面中實施可選的禮品消息表單。 我們的表格為您提供了標准的運輸信息,但我希望獲得該信息,因此,如果客戶開始填寫禮品消息的字段,則禮品消息所需的所有字段都需要進行驗證。 我有4個領域

:gift_message_to-輸入有關禮物送給誰的信息

:gift_message_from-禮物來自的人的名字

:gift_message_message-他們的信息

:gift_recipient_email-將會向收件人發送一封電子郵件,通知他們他們將收到禮物。 這將使用正則表達式和html5來確保它是格式正確的電子郵件地址。

我當時想創建自己的驗證方法

  def order_has_gift_message_field
    order_has_gift_message_field = false
    if self.gift_message_message.to_s.size > 0 || self.gift_message_to.to_s.size > 0 ||  self.gift_message_from.to_s.size > 0 || self.gift_recipient_email.to_s.size
      order_has_gift_message_field = true
    end
    return order_has_gift_message_field
  end

並驗證它

validate :order_has_gift_message_field

因此,如果用戶開始輸入這些字段中的任何一個,其他字段也需要填寫。 但是如果他們不輸入任何信息,則不會顯示驗證信息。 有人做過類似的事情嗎? 任何建議將不勝感激。

看一下Rails指南的自定義驗證

有一個示例可以像您建議的那樣制作自定義驗證方法。

class Invoice < ActiveRecord::Base
  validate :active_customer, on: :create

  def active_customer
    errors.add(:customer_id, "is not active") unless customer.active?
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM