How can I DRY this cide?

I have code like this

def self.find(*args)
if @@filter
with_scope :find => {:conditions => @@filter } do
super
end
else
super
end
end

def self.paginate(*args)
if @@filter
with_scope :find => {:conditions => @@filter } do
super
end
else
super
end
end

def self.related_tag_counts(*args)
if @@filter
with_scope :find => {:conditions => @@filter } do
super
end
else
super
end
end

def self.tag_counts(*args)
if @@filter
with_scope :find => {:conditions => @@filter } do
super
end
else
super
end
end

as you can see, I’m wrapping some methods with a with_scope when
@@filtter is set. This is kind of ugly. How can I DRY this code?

Hello,

def self.find(*args)
find @@filter ? {}.merge(:conditions => @@filter) : {}
super
end

Something like that is what I would do.

thanks, but that code causes a stack overflow. I think it’s an
infinite recursion. I’m not sure how it works anyway.