Ruby on rails 如何编写rails验证,该验证以表单中是否填写了其他字段为条件?

Ruby on rails 如何编写rails验证,该验证以表单中是否填写了其他字段为条件?,ruby-on-rails,forms,validation,input,rails-models,Ruby On Rails,Forms,Validation,Input,Rails Models,我正在尝试实现一个可选的礼品信息表单,它位于我们的电子商务网站的结帐页面中。我们的表格中有您的标准配送信息,但我希望有这样的信息,如果客户开始填写礼品信息的字段,礼品信息所需的所有字段都需要验证。我有4个字段 :gift\u message\u to--输入有关礼物是送给谁的信息 :gift\u message\u from--从中获得礼物的人的姓名 :礼物\u消息\u消息--他们的消息 :gift\u recipient\u email--将向收件人发送一封电子邮件,通知他们将收到礼物。这将使

我正在尝试实现一个可选的礼品信息表单,它位于我们的电子商务网站的结帐页面中。我们的表格中有您的标准配送信息,但我希望有这样的信息,如果客户开始填写礼品信息的字段,礼品信息所需的所有字段都需要验证。我有4个字段

:gift\u message\u to--输入有关礼物是送给谁的信息

:gift\u message\u from--从中获得礼物的人的姓名

:礼物\u消息\u消息--他们的消息

:gift\u recipient\u 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

因此,如果用户开始输入这些字段中的任何一个,其他字段也需要填写。但如果他们不输入任何信息,验证将不存在。有人做过类似的事情吗?如有任何建议,将不胜感激

看一下导轨的导轨

这里有一个像您建议的那样创建自定义验证方法的示例

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

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