0

私は属性thedateタイプ日時とモデルXを持っています。ダイナミックファインダで一時的な属性を使用できるようにするにはどうすればよいですか?

ダイナミックファインダーの場合、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を見つけましたが、どうやらそれは手動でそれぞれ、すべての目的のメソッドを実装するために必要となります。私はそれを避けたい。

答えて

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)

+0

で使用することができます使用することができます。右?これはおそらく良い選択肢です。 – user569825

+0

はい、できます。再利用して組み合わせることができます – shingara

関連する問題