I constantly find it hard to know how to express a duration, but once I figure it out, it's abundantly clear. So here's some helpful examples.
There are multiple methods that do the same thing, to help you express the intent the way that makes sense to you.
1.week.ago # same as Time.current - 1.week
1.week.before(@date) # same as @date - 1.week
I can't think of a use for until
1.week.from_now # same as Time.current + 1.week
1.week.after(@date) # same as @date + 1.week
I can't think of a use for since
See: Duration reference
Loop through each week:
(@from..@to).step(7).each {} # Assuming magic number of 7 days in week