Active Record - Select by multiple days of week

Wondering what would be the best way to implement this.

I need to store that an item occurs on a specific day of the week or
Say in the model we have a title and a day of week.
I was thinking doing a 0-7 in my model for the item representing the
day of the week with zero being everyday.

For a selection criteria say I wanted to search for every title
starting on Monday, Wendsday and Friday where each day on the
selection screen would be checkbox representing the days Monday -
Sunday and Everyday (clicking everyday would remove the checkboxes
should someone select everyday and a day of the week)

What would the active record query look like to dynamically pass in
the days of the week selected should say mon, wed and fri get selected
given that what they selected is past to the controller in a
"days_of_week" variable.

I'm not totally tied to the idea of storing the day as a number so if
anyone has any better implementations of this I'm listening.

S Gallo

You could store an seven-figure number and bitwise it to work out
whether a given day was on or off.

Or you could have a separate table for "days" and have a many_to_many
association with it, to get a "days" collection in your model.

Or you could use a recurrence rule, if you need more flexibility
(something like RiCal)

Any preference?


PS Using "zero" for "all" would not be very intuitive, as 0 is
normally used to indicate Sunday.

Something like

# get weekdays_selected to be an array of the numbers corresponding to
the checked boxes plus 0

# For example if you wanted to find events on Mondays and Wednesdays,
weekdays_selected should be:
# [0, 2, 3]

Items.all(:conditions => ["weekday IN ?", weekdays_selected])

or if you're using Rails3

Items.where("weekday IN ?", weekdays_selected)

If it were me I might think about tweaking this a bit and use 7
instead of 0 for any day, since Ruby's Date and Time use 0 for Sunday
through 6 for Saturday.

Caveat, none of the above code has been tested, and I've only had two
sips of coffee this morning.

Thanks all. I will replace 7 with everyday and 0 for sunday.
And Rick thanks for the active record code. That's exactly what I was
looking for.

S Gallo