我想在Rails中创建自定义验证。我需要验证POST的start_date_time和end_date_time(一起)不会与数据库中的那个组合重叠。
示例:
start_date 05/15/2000 end_date 05/30/2000
start_date 05/10/2000 end_date 05/20/2000 FAILS!
这就是问题:
1)我想将两个开始和结束字段发送到函数
2)我想获取两个 POSTed字段的值,以用于构建查询。
3)奖励:我想使用范围(比如说,对于给定的[:user_id,:event] - 但是,我希望再次传入。
如何获取字段的值?
def self.validates_datetime_not_overlapping(start, finish, scope_attr=[], conf={})
config = {
:message => 'some default message'
}
config.update(conf)
# Now what?
end
我有点陷入困境。我已经搜过网了,无法搞清楚....我可以 但使用validate_each ...
并非同时同时任何帮助都好!
谢谢:)
答案 0 :(得分:3)
您可以添加:
validate :check_dates
def check_dates
do.whatever.you.want.with.any.field
end
编辑:
所以也许validate_with
?
RoR指南的修改示例:
class Person < ActiveRecord::Base
validates_with DatesValidator, :start => :your_start_date, :stop => :your_stop_date
end
class DatesValidator < ActiveRecord::Validator
def validate
start = record.send(options[:start])
stop = record.send(options[:stop])
...
end
end