Rails options_from_collection_for_select返回唯一年份值

时间:2015-08-25 14:34:30

标签: ruby-on-rails ruby

我使用它来获取所有日期的选择:

options_from_collection_for_select(ObjectModel.all, :id, :get_year)

这是我的模型中的get_year方法:

def get_year
  date_attr.strftime("%Y")
end

但它会归还:

2015

2015

2015

然而,我需要这些年才是独一无二的。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果无论具有相同年份属性的记录中的哪个ID必须采取,那么您可以这样做:

options_from_collection_for_select(ObjectModel.all.to_a.uniq{ |o| o.get_year}, :id, :get_year)

但更好的方法是更换这部分

ObjectModel.all.to_a.uniq{ |o| o.get_year}

使用范围检索数据库级别上的唯一(按年份)记录。这取决于您的数据库。

您可能还需要对记录进行排序。然后:

ObjectModel.order(:date_attr).uniq{ |o| o.get_year}