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。然后重建数据库结构,避免迁移过程中的所有错误。