Active Admin自定义过滤器。按日过滤日期|月| Date属性的年份

时间:2012-08-20 18:45:39

标签: ruby-on-rails activeadmin meta-search

我有一个带有:birthday属性的Model,我希望按表单中指定的月份过滤掉这些日期(ActiveAdmin的DSL:select)。

这是简单范围的示例,仅提取生日日期的月份。也许可以提供帮助:

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

2 个答案:

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

答案 1 :(得分:2)

最新版Active Admin的解决方案:

input_n = int(input("Choisissez un nombre : "))

input_list = list()
for i in range(0,input_n+1):
    input_list.append(i)

if input_n <= 10:
    print ("+".join(str(i) for i in input_list) + " = ", sum(input_list))
    print (str(input_n)+'*'+'('+str(input_n)+'+1)/2 = ', int(input_n*(input_n+1)/2))
elif input_n > 10:
    print("+".join(str(i) for i in range(5)) + " + ... +" + "+".join(str(i) for i in range(input_n-5,input_n+1), sum(input_list)))
    print (str(input_n)+'*'+'('+str(input_n)+'+1)/2 = ', int(input_n*(input_n+1)/2))