This repository has been archived by the owner on Jul 24, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 57
Reservation Flags
Sydney Young edited this page Sep 29, 2015
·
2 revisions
flags
is a bitmask that holds miscellaneous booleans.
To use any of the currently existing flags, pass the flag's symbol to these methods: flagged?(flag)
, flag(flag)
, and unflag(flag)
. Note that you must call save
after changing flags.
To assign multiple flags at once, you can use |
to concatenate them, e.g.
res.flags |= Reservation::FLAGS[:request] | Reservation::FLAGS[:expired]
res.save!
-
request
, used to remember which reservations started off as requests -
broken
, used to mark a reservation that resulted in broken equipment (NOT YET IMPLEMENTED, see issue #1216) -
lost
, used to mark a reservation where the equipment was lost (NOT YET IMPLEMENTED, see issue #1216) -
fined
, used to mark a reservation that has incurred a fine (NOT YET IMPLEMENTED, see issue #1216) -
missed_email_sent
, used to remember if we've sent a missed notification email so we don't spam users. -
expired
, used to mark requests that were denied because the start date passed before the request could be approved or denied
To add a new flag, you will need to add it to the FLAGS
hash in the reservation model.
FLAGS = { request: (1 << 1), broken: (1 << 2), lost: (1 << 3),
fined: (1 << 4), missed_email_sent: (1 << 5),
expired: (1 << 6) }
The value that your new flag maps to should be a shift of one greater than whatever the last shift is. In this case, that would be (1 << 6)
.
FLAGS = { request: (1 << 1), broken: (1 << 2), lost: (1 << 3),
fined: (1 << 4), missed_email_sent: (1 << 5),
expired: (1 << 6), your_new_flag: (1 << 7) }
You can now use your new flag with the flagged?(flag)
, flag(flag)
, and unflag(flag)
methods!