Ruby 验证开始和结束时间属性

Ruby 验证开始和结束时间属性,ruby,validation,ruby-on-rails-4,comparison,time-select,Ruby,Validation,Ruby On Rails 4,Comparison,Time Select,我试图验证我认为做起来相当简单的事情。我有两个时间选择属性“开始时间”和“结束时间”。我只是试图在控制器中验证用户输入的结束时间是等于开始时间还是在开始时间之前。根本不涉及日期。我在下面有一个验证方法,但是不管用户输入什么,它总是错误的 对rails来说是相当陌生的,我不禁觉得我错过了一些小东西。这种验证应该有效,不是吗 class Casenote < ActiveRecord::Base validate :end_must_be_after_start belongs_to :

我试图验证我认为做起来相当简单的事情。我有两个时间选择属性“开始时间”和“结束时间”。我只是试图在控制器中验证用户输入的结束时间是等于开始时间还是在开始时间之前。根本不涉及日期。我在下面有一个验证方法,但是不管用户输入什么,它总是错误的

对rails来说是相当陌生的,我不禁觉得我错过了一些小东西。这种验证应该有效,不是吗

class Casenote < ActiveRecord::Base
 validate :end_must_be_after_start

 belongs_to :servicelog
 default_scope { order(:id) }


 private

 def end_must_be_after_start
   if :start_time >= :end_time
     errors.add(:end_time, "must be after start time")
   end
 end

end
class Casenote=:结束时间
错误。添加(:结束时间,“必须在开始时间之后”)
结束
结束
结束

您正在比较两个符号:开始时间和结束时间。您需要比较两个属性
start\u time
end\u time

def end_must_be_after_start
  if start_time >= end_time
    errors.add(:end_time, "must be after start time")
  end
end

看起来我的另一个“端点”被截断了,为了清晰起见,现在添加了它。我的印象是这些符号接受了提交的值并验证了它们。如何提取这些提交的值并在模型中进行比较?模型是否是比较这些值的错误位置?创建模型对象时,这些值是该模型中的方法。如果执行了
model=model.new(foo:bar,bar:foo)
,则要获取foo或bar的值,它将是
model.foo
->bar
model.bar
->foo。因此,模型是检查这一点的最佳场所。每次创建或保存模型时,此验证都将运行。是否可以根据我的情况请求一个示例?我仍然不清楚如何在我的验证中实现上面的代码。@NinjaBranDizzle听起来你会从一些阅读中受益。退房并离开。