0

我有一个模型X,其属性thedate类型为datetime

使动态查找器可使用日期年份的最巧妙方法是什么?

例子:

X.find_by_year(2012)
X.find_by_location_and_year('here', 2012)
X.find_by_year_and_name(2012, 'name')
X.find_all_by_year(2012)
...

到目前为止,我找到了这种自定义查找器方法,但显然这需要手动实现每个所需的方法。我想避免这种情况。

4

1 回答 1

0

最好的说法是做一个范围而不是尝试使用动态查找。您可以创建范围年份和范围并使用它

scope :year, lambda { |year| { ['thedate > ? AND thedate < ?', DateTime.now.change(:year => year).beginning_of_year, DateTime.now.change(:year => year).ending_of_year] }

您可以使用X.year(2012)

于 2012-03-15T11:29:09.090 回答