I have an active relation Bar
object with an attribute shift_date
. shift_date
represents each day between March and June. March and June comes from Foo
which has attributes start_month
and end_month
:
f = Foo.find(1)
days = (f.end_month - f.start_month).to_i
weeks = (days * 0.142857).round(2)
f.bars
will give me days
objects. Where days
is the total amount of objetcs.
My trouble is to get Bar
s objects, objects for week 1, 2 or 3 etc:
f.bars.where('shift_date >= ?', (weeks/7.days)).group_by{ |result| result }
operator does not exist: timestamp without time zone >= numeric
So what am I saying? Give me all objects on week 1 or week 5, if any. How do I go about this, please?
Im on to something but not right:
f.bars.where('shift_date >= ?', Date.today).group_by{ |result| result}
Edit:
Im almost there. I could splat out the days with:
days_array = *(f.start_month..f.end_month)
then
f.bars.where(shift_date: days_array[0]..days_array[7])
That would be the answer! But...not really. For my views, I need to group the splatted days in a 7 days interval as week, so days_array[0]
to days_array[7]
would be week 1 and days_array[8]
to days_array[14]
would be week 2 etc. How to show that in the view? This will give me everything I need.