Ruby on rails将字符串转换为日期并比较日期

时间:2015-07-14 02:32:56

标签: ruby-on-rails ruby mongoid

鉴于以下模型:

class Person

  field :dob, type: String #In the form of YYYY-MM-DD

end

你怎么写一个范围只能让人们拥有:dob值,比如2000-1-1?像下面的内容:

scope :is_child, -> { where(:dob.to_date > "2000-1-1".to_date) }

3 个答案:

答案 0 :(得分:0)

您将日期存储为ISO8601格式的字符串,并且ISO8601日期字符串明智地进行比较(即字符串比较与相应的日期比较相匹配)。这意味着您可以使用简单的字符串操作:

scope :is_child, -> { where(:dob.gt => '2000-01-01') }

您可能希望使用基于当前日期的动态日期而不是2000-01-01,否则您每年都必须更新代码并且容易出错

答案 1 :(得分:-1)

使用Ruby的Date类将日期与范围进行比较。

答案 2 :(得分:-1)

你可以尝试

scope :is_child, -> {where("? < ?",Date.parse("2001-1-1","%Y-%m-
%d"),Date.parse(self.dob,"%Y-%m-%d"))}