2015-07-02 5 views
0

В моем приложении у меня есть модель invoice, которая имеет атрибут invoice_date. В моей форме поиска Ransack я хочу иметь month и year selectbox и на основе этих значений. Я хочу вернуть счета-фактуры с датой счета в течение этого периода.Ransack использовать пользовательские поля

Но month и year не модели атрибутов, поэтому я не могу использовать f.select :month_eq и f.select :year_eq. Как я могу это сделать?

Я посмотрел в ransackers и создал это в моей invoice модели:

ransacker :month do 
    year = 2015 
    where("invoice_date >= ? and invoice_date <= ?", Date.new(year,month,1), Date.new(year,month).end_of_month) 
end 

Как я могу использовать month_eq в этом грабитель? И как мне вернуть коллекцию счетов-фактур?

ответ

0

Как я понял ваш вопрос, вам нужен набор результатов, который соответствует данному месяцу. Таким образом, в вашем ransacker используйте следующие

ransacker :month do 
    where("extract(month from created_at) =? AND extract(year from created_at) =? ",Date.today.month, 2015) 
end 
+0

Как я понимаю, ваш ответ использует месяц. Но он должен использовать месяц, выбранный в форме поиска – John

+0

Ya вместо передачи Date.today.month, вы проходите месяц, выбранный из формы поиска – Guru

+0

Но как это выглядит? Просто 'month' или' params [: month] 'или' params [: q] [: month] '? – John