我试图在没有运气的情况下得到答案,所以我会再试一次。
我已经实施了铁路广播时区的好东西,允许用户设置他们的时区。有用。 Time.zone.now
给出了正确的时区。它就在这里
http://stevenyue.com/2013/03/23/date-time-datetime-in-ruby-and-rails/
我有活动并且一直试图让我的表单中的datetime_select
给我一个也在用户时区的时间。
我的目标是能够将其与当前时间(Time.zone.now
)进行比较,以验证开始时间不在当前时间之前。并最终结束时间>开始时间等。
我已经厌倦了几种方式,其中包括没有运气......
这一个 - 他后来回答了他自己的问题(这正是我的问题)
Rails datetime_select posting my current time in UTC
def start_date_cannot_be_in_the_past
if date_start.in_time_zone(Time.zone) < Time.zone.now
errors.add(:date_start, "has already passed")
end
end
上述情况似乎无效,因为您无法像这样提取date_start
。它被分成不同的组件,所以我试着做这样的事情
def start_date_cannot_be_in_the_past
date = DateTime.new(params[event][date_start(1i)].to_i, params[event][date_start(2i)].to_i, params[event][date_start(3i)].to_i, params[event][date_start(4i)].to_i, params[event][date_start(5i)].to_i)
if date.in_time_zone < Time.zone.now
errors.add(:date_start, "has already passed")
end
end
在我的模型中,我无法访问参数,因此我不知道如何让它工作......
如果可能的话,我想转移到jquery日历/时间选择器,因为我似乎无法完成这项工作..但是对于替代品或对此的任何建议都表示赞赏..
答案 0 :(得分:0)
确保您的模型中有此行:
validate :start_date_cannot_be_in_the_past
然后这个方法可以是:
private
def start_date_cannot_be_in_the_past
errors.add(:date_start, "has already passed") if self.date_start < Time.zone.now
end