Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 自定义验证中nil:NilClass的未定义方法“>”_Ruby On Rails - Fatal编程技术网

Ruby on rails 自定义验证中nil:NilClass的未定义方法“>”

Ruby on rails 自定义验证中nil:NilClass的未定义方法“>”,ruby-on-rails,Ruby On Rails,有以下模型: class TimeCorrection < ActiveRecord::Base validates :start_time, :end_time, :value, presence: true validate :time_comparison def time_comparison errors[:base] << 'Incorrect end time' if start_time > end_time

有以下模型:

class TimeCorrection < ActiveRecord::Base
    validates :start_time, :end_time, :value, presence: true

    validate :time_comparison

    def time_comparison
        errors[:base] << 'Incorrect end time' if start_time > end_time
    end
end

如果结束时间或开始时间为零,则有关于零的错误。我怎样才能适应?如何仅在上一次验证正确的情况下执行时间比较验证

我认为,您必须检查开始和结束时间是否为零:

class TimeCorrection < ActiveRecord::Base
    validates :start_time, :end_time, :value, presence: true

    validate :time_comparison

    def time_comparison
        errors[:base] << 'Incorrect end time' if start_time && end_time && start_time > end_time
    end
end
def time_comparison
    errors[:base] << 'Incorrect end time' if start_time && end_time && start_time > end_time
end

我认为,您必须检查开始和结束时间是否为零:

def time_comparison
    errors[:base] << 'Incorrect end time' if start_time && end_time && start_time > end_time
end

开始时间为零,但无论如何,您是否可以使用validates\u presence:start\u time,:end\u time,:value行来代替您指定的值?我不明白您的意思,抱歉,替换validates:start\u time,:end\u time,:value,presence:true和validates\u presence:start\u time,:end\u time,:value。然后重建数据库结构,避免迁移过程中的所有错误。开始时间为零,但无论如何,您是否可以使用validates\u presence:start\u time,:end\u time,:value行来代替您指定的值?我不明白您的意思,抱歉,替换validates:start\u time,:end\u time,:value,presence:true和validates\u presence:start\u time,:end\u time,:value。然后重建数据库结构,避免迁移过程中的所有错误。