在具有混合列类型的ActiveRecord对象中仅查找日期属性

时间:2018-07-31 14:07:14

标签: ruby-on-rails ruby activerecord

我有一个ActiveRecord对象,该对象的属性可以是整数或日期。我需要查找并返回最早的日期(忽略created_at和Updated_at字段)。

我以为我可以只查询具有日期类型的属性,然后从那里进行排序,但是这是不可能的,或者我语法不正确。

我可以使用Object.find(x).attributes.values.compact将值放入数组中,但这包括了created_at和updated_at值以及整数,然后我仍然对如何按日期对结果进行排序感到困惑。

1 个答案:

答案 0 :(得分:0)

如果您想不排除日期和两个timestamp,则应明确排除:

Object.find(x).
  attributes.
  reject { |k, _| %w[created_at updated_at].include? k }.
  select { |_, v| v.is_a? Date }.
  values.
  sort.
  last