用if验证Rails

时间:2015-02-14 22:48:21

标签: ruby-on-rails

我无法正常运行验证。我试图检查用户是否已检查:noship then:weight必须等于0.

使用下面的代码,我得到一个“Undefined local variable noship”错误

来自models / package.rb的

片段

class Package < ActiveRecord::Base

  belongs_to :campaign

  validates_presence_of :weight, :campaign

  validates :weight, numericality: { equal_to: 0 }, :if => :noship_test?


def noship_test?
  noship == true
end

  rails_admin do
    object_label_method do
      :custom_name
    end
  end

:noship和:权重值正常工作并正确保存到我的数据库

1 个答案:

答案 0 :(得分:1)

由于noship属于广告系列模型,因此您需要执行以下操作:

def noship_test?
  campaign && campaign.noship
end

但是,如果有这样的方法似乎是多余的,只需将lambda传递给if键:

validates :weight, numericality: { equal_to: 0 }, :if => ->(r) { r.campaign && r.campaign.noship }