如何在表单中填写其他字段时,如何编写rails验证?

时间:2014-05-20 01:44:17

标签: ruby-on-rails forms validation input rails-models

我正在尝试在电子商务网站的结帐页面中实施可选的礼品消息表单。我们的表格为您提供标准的运输信息,但我希望如此,如果客户开始填写礼品消息的字段,则礼品消息所需的所有字段都需要验证。我有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

因此,如果用户开始输入任何这些字段,则还需要填写其他字段。但如果他们没有输入任何信息,则不会出现验证。有没有人做过类似的事情?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

查看Rails指南' custom validations

有一个例子可以像你建议的那样制作自定义验证方法。

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

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