I've just put out a plugin for ActiveRecord that stops you having to write repetitive bundles of methods such as
class Order < ActiveRecord::Base def self.paid find_all_by_paid(true) end
def self.unpaid find_all_by_paid(false) end
def mark_as_paid update_attribute(:paid, true) # related tasks end
def mark_as_unpaid update_attribute(:paid, false) # related tasks end end
It gives you dynamic attribute-based methods similar to these. You can use certain negative prefixes to look for false values - Order.unpaid returns orders where paid is false - and chain attributes together, as in Order.paid_and_delivered, Cocktail.shaken_but_not_stirred, etc. More info here:
I'd really appreciate a few people kicking its tyres in anything other than MySQL, or in Rails versions 1.0.x (is anyone still using those). Comments/bugs/test reports are always welcome.