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 }