如何在动态查找器中创建瞬态属性?

时间:2012-03-15 11:09:18

标签: ruby-on-rails ruby-on-rails-3 attributes rails-models dynamic-finders

我的模型 X datetime 的属性 thedate

为动态查找器提供日期最简单的方法是什么?

示例:

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)
...

到目前为止,我找到了this custom finder approach,但显然需要手动实现每个所需的方法。我想避免这种情况。

1 个答案:

答案 0 :(得分: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)

使用