新手问题 还是之前那个验证问题,重新捋一遍

xiaobai2 · 2016年10月09日 · 最后由 xiaobai2 回复于 2016年10月09日 · 1625 次阅读

需求是这样的:

我的一个 model 里边有一个设置发送消息的字段 DateTime 类型现在想做这样一个自定义验证

  1. 新建的时候设置发送时间一天内只能设置三条数据
  2. 一天的任意一个小时内只能设置一条数据

这些限制都是针对 send_date 的,并不是针对 created_at(send_date 是一个 datepicker)

validate :only_three_by_day
def only_three_by_day
  if self.class.where("send_date > ?", Time.now.beginning_of_day).count >= 3
    errors.add(:id, "一天之内只能发3条!")
  end
end

validate :only_two_by_hour
def only_two_by_hour
  if self.class.where("send_date > ? ", 1.hours.ago).count >= 1
    errors.add(:id, "1个小时之内只能发1条哦!")
  end
end

这样好像做不对啊,求解!

来个大神吧

检查下数据库时区?

validate :only_three_by_day
  def only_three_by_day
    if self.class.where("send_date BETWEEN ? AND ?", send_date.beginning_of_day, send_date.end_of_day).count > 3
      errors.add(:id, "一天之内只能发3条!")
    end
  end

  validate :only_two_by_hour
  def only_two_by_hour
    if self.class.where("send_date BETWEEN ? AND ? ", send_date.beginning_of_hour, send_date.end_of_hour).count > 1
      errors.add(:id, "1个小时之内只能发1条哦!")
    end
  end

#3 楼 @easonlovewan 居然有 beginning_of_hour,感谢知道了

xiaobai2 关闭了讨论。 10月09日 14:34
需要 登录 后方可回复, 如果你还没有账号请 注册新账号