首页 > 解决方案 > 缺少属性时的验证错误(未定义的方法 `valid_car_type?' for nil:NilClass)

问题描述

处理此类错误的最佳方法是什么?由于该模式需要一个 valid_object,但是当它没有得到它时,它会正确地为缺少的属性提供验证错误,但随后会在valid_car_type?.

这只是一个简化的例子。

模型

 class Car    
    include ActiveModel::Model
    validates_presence_of :subject :valid_object
    validate :valid_car_type

    def valid_car_type?
       valid_object.car_type == "truck"
    end
  end


 NoMethodError:
   undefined method `valid_car_type?' for nil:NilClass

标签: ruby-on-railsrubyrspec

解决方案


使用活动记录回调,例如“before_save、after_save 等...”并调用 valid_car_type?

class Car    
    include ActiveModel::Model
    validates_presence_of :subject :valid_object
    before_save :valid_car_type?

    def valid_car_type?
       valid_object.car_type == "truck"
    end
  end

推荐阅读