ruby-on-rails - view教程 - rails数据库




Rails的-如何验证一个字段只有当另一个字段有一定的价值? (3)

你可以使用标志和lambda:

validates_presence_of :state, :granted_at, :if => lambda {self.type != 1}

或者只是创建私有方法:

validates_presence_of :state, :granted_at, :if => :valid_type?

private
def valid_type?
  type != 1
end

我很新的Rails和我现在遇到了一个问题,我无法与我的朋友谷歌解决:)

在我的形式,我有一个选择三个值: 苹果香蕉樱桃 。 如果我从select中选择Apple ,则隐藏另一个Select-和一个带有Javascript的Text-field,因为当选择Apple时,不需要再填写这两个字段。

所以,现在我提交时验证表单时遇到问题。 例如在“只有验证一个字段,如果另一个是空的”的情况下,我发现了一些类似的问题。

这个问题是这样解决的:

validates_presence_of :mobile_number, :unless => :home_phone?

所以我刚刚尝试了我脑海中浮现的第一件事:

validates_presence_of :state, :granted_at, :if => :type != 1

但是当我运行它,我得到这个错误:

undefined method `validate' for true:TrueClass

所以现在我没有发现如何从创建的对象中获取值...先谢谢您的帮助,我希望我的问题不像听起来那么明显:-)


虽然上面提到的方法是最好的做法,但你也可以这样简单:

validates_presence_of :state, :granted_at, :if => "type!=1"

根据以前的答案,您也可以使用较短的“箭头”语法

validates :state, :granted_at, presence: true, if: ->(o) { o.type != 1 }




models