一行自定义验证

时间:2017-10-01 08:58:55

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-5

在Proc中,我想验证提供的语句是否返回true。

我尝试了以下内容:

validate :home, Proc.new { |c| c.home.kitchen.present? }

它不起作用。没有厨房时,它不会显示验证错误。

我必须这样写:

validate :home_kitchen_must_be_present

def home_kitchen_must_be_present
   ....

或者是否有可用的语法将其写入一行?谢谢

1 个答案:

答案 0 :(得分:0)

使用proc

  

验证:home,presence:true,if:Proc.new {| c | c.home.kitchen.present? }

使用方法:

validates :home, presence: true, if: :home_kitchen_must_be_present

def home_kitchen_must_be_present
  true # do your checking and return true or false
end