在Rails中检查日期的最佳方法是什么?
我有一个寄存器,某些寄存器在某些日子发生,而我想要做的是限制可选日期以匹配日期,即如果寄存器设置为星期一15:00,那么日期选择应该只提供星期一日期,即2013年4月1日,2013年4月8日,2013年4月15日等。
以下是我当前注册表的截图:
我的表单使用simple_form
gem,并有以下简单输入:
<%= f.input :date %>
编辑: 这是我的模型,按照cthulhu的要求
class Register < ActiveRecord::Base
has_many :student_registers
has_many :students, :through => :student_registers
belongs_to :event
attr_accessible :date, :student_ids, :module_class_id, :event_id
end
答案 0 :(得分:2)
日期类有很多有用的方法,比如
>> d = Date.today
=> Fri, 05 Apr 2013
>> d.monday?
=> false
>> d.friday?
=> true
>> d.wday
=> 5
编写验证方法应该足够了:
class Register < ActiveRecord::Base
validates_each :date do |record, attr, value|
record.errors.add(attr, "Must be #{event.day}") unless value.wday == Date.parse(event.day).wday # I assume 'event.day' holds a weekday as a String, e.g. 'Monday'
end
end
答案 1 :(得分:0)
可能的日期是否存储在数据库表中?如果是这样,那么做一个集合选择可以过滤掉你想要的值。类似的东西:
<%= f.collection_select(:date, Dates.all.where(:day => 5), :id, :name, :prompt => 'Select') %>
将“Dates.all.where(:day =&gt; 5)”替换为您拥有的任何日期组合以及您想要的任何条件。