Wednesday, March 30, 2011

Named Scopes

You can reuse a named_scope like this:

named_scope :direction, lambda { |direction| {:conditions => ['in_out = ?', direction]}}
named_scope :outgoing, lambda{ self.direction('O').proxy_options }


If you have defined a load of named scopes and you want to use these to filter records based on parameters from a form, you can do so:

def find_using_scopes(scope_params)
scopes.keys.select { |s| scope_params.key?(s) }.inject(self) { |memo, scope| memo.send(scope, scope_params[scope]) }
end