Hi all,
I’m trying to extend ActiveRecord::Base.find() to include a default
scope with every query… I’ve pasted my dirty attempt below. Surely
theres a better way?
Another problem with the below is that all the dynamic finder methods
aren’t effected.
Any ideas?
cheers
-henry
class LinkCategory < ActiveRecord::Base
def self.find(*args)
options = args.last.is_a?(Hash) ? args.pop : {}
sql = “site_id=’#{some_integer}’”
if options[:conditions] && !options[:conditions].empty?
options[:conditions] += " AND #{sql}"
else
options[:conditions] = “#{sql}”
end
args << options
super(*args)
end
end
check out “with_scope”
http://rubyonrails.com/rails/classes/ActiveRecord/Base.html#M000892
however, read this as well. DHH has decided to make with_scope
protected as of 2.0, so it could affect how you use it.
http://www.mail-archive.com/[email protected]/msg00579.html
On 11/12/06, [email protected]
On 11/20/06, Chris H. [email protected] wrote:
check out “with_scope”
http://rubyonrails.com/rails/classes/ActiveRecord/Base.html#M000892
however, read this as well. DHH has decided to make with_scope
protected as of 2.0, so it could affect how you use it.
http://www.mail-archive.com/[email protected]/msg00579.html
def find_in_site(*args)
with_scope :find => { … } do
find *args
end
end
–
Rick O.
http://weblog.techno-weenie.net
http://mephistoblog.com