我正在尝试比较我的表单中的几个日期。
我的验证我有类似的东西:
:mydate - 1.day
但我明白了:
undefined method `-' for :mydate:Symbol"
完全是一个新问题,但我无法弄清楚LOL - 如何在符号上执行日期数学?
编辑:
好的,所以我无法从控制器或表单对象访问params。我正在使用基本的安静控制器:
def create
@booking = Booking.new(params[:booking])
etc...
end
然后在我的模型中我想验证一些日期 - 最终结果应该是Checkin日期应该与Checkout日期减去夜晚相同
所以我的模特:
class Booking < ActiveRecord::Base
def validate
errors.add_to_base "Nights Borked" if :checkin != (:checkout - :nights.day)
end
end
或者我想做那样的事,但不能。
如果我尝试访问@ booking.checkin,我会:
未定义的方法`checkin'
如果我尝试
@foo = params[:booking][:checkin]
我得到了
undefined local variable or method `params' for #<Class:0x103fd1408>
我在这里缺少什么。显而易见的事情可能大声笑:))
答案 0 :(得分:3)
您无法对符号执行日期数学运算,因为符号只是一个更复杂的字符串。它没有其名称以外的值。但假设您的模型具有名为mydate的属性:
@object.mydate - 1.day
或者如果您从表单传入参数:
params[:mydate] - 1.day
根据您更新的代码示例,您希望将属性称为self.attribute
,如下所示:
class Booking < ActiveRecord::Base
def validate
errors.add_to_base "Nights Borked" if self.checkin != (self.checkout - self.nights.day)
end
end
已在预订对象上调用validate方法,因此您希望在该上下文中调用属性。