5

:birthday 属性を持つモデルがあり、フォーム (ActiveAdmin の DSL :select) で指定された月ごとにこれらの日付を除外したいと考えています。

これは、誕生日の日付の月のみを抽出する単純なスコープの例です。多分助けることができます:

scope :birthday_month, where('extract(month from birthday) = ?', Date.today.month)
4

2 に答える 2

6

ここに解決策があります:

Active Admin リソース (app/admin/employees.rb) に次のように記述します。

filter :month, :as => :select, :collection => (1..12)

そして、私のモデル (app/models/employee.rb):

scope :month_eq, lambda{ |month| where("strftime('%m', birthday) + 0 = ?", month.to_i) }

search_methods :month_eq

このアプローチでは、'_eq' スコープ メソッド (MetaSearch) を定義し、それをsearch_methods :month_eq(MetaSearch も) 使用できるようにします。

注:
sqlite を使用していない場合は、where('extract(month from birthday) = ?', month.to_i)代わりに使用することをお勧めします。

于 2012-08-20T21:04:40.537 に答える