0

タイプdatetimeの属性thedateを持つモデルXがあります。

動的ファインダーで日付の年を利用できるようにする最も巧妙な方法は何ですか?

例:

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

これまでのところ、このカスタム finder アプローチを見つけましたが、明らかに、必要なすべてのメソッドを手動で実装する必要があります。それは避けたい。

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 に答える