我无法正常运行验证。我试图检查用户是否已检查: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和:权重值正常工作并正确保存到我的数据库
答案 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 }