微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails:验证foo的存在,除非bar ==’baz’

我正在研究一个模型,该模型在创建对象时需要设置两个关联,在一种情况下除外.

基本上,它需要像这样工作.

class Example < ActiveRecord::Base
  has_one :foo
  has_one :bar

  validates_presence_of :foo
  validates_presence_of :bar,:unless => :foo == Foo.find_by_name('ThisFoodoesntLikeBars')
end

我不确定如何构建:除非条件在这里,因为它需要检查:foo是否是特定对象.

你怎么做这样的事情?

解决方法

:除非接受Proc
validates_presence_of :bar,:unless => Proc.new { |ex| ex.foo == Foo.find_by_name('ThisFoodoesntLikeBars') }

:unless – Specifies a method,proc or string to call to determine if the validation should not occur (e.g. :unless => :skip_validation,or :unless => Proc.new { |user| user.signup_step <= 2 }). The method,proc or string should return or evaluate to a true or false value.

http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐