鉴于以下模型:
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) }
答案 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"))}