# How can I DRY this cide?

**URL:** <https://www.ruby-forum.com/t/how-can-i-dry-this-cide/126130>\
**Category:** Rails\
**Created:** [January 15, 2008, 5:52pm UTC](https://www.ruby-forum.com/t/how-can-i-dry-this-cide/126130 "2008-01-15T17:52:48Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rubynuby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ba9def/32.png) [@rubynuby](https://www.ruby-forum.com/u/rubynuby)\
**Post date:** [January 15, 2008, 5:52pm UTC](https://www.ruby-forum.com/t/how-can-i-dry-this-cide/126130/1 "2008-01-15T17:52:48Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![rubynuby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ba9def/32.png) [@rubynuby](https://www.ruby-forum.com/u/rubynuby)\
**Post date:** [January 15, 2008, 5:59pm UTC](https://www.ruby-forum.com/t/how-can-i-dry-this-cide/126130/2 "2008-01-15T17:59:24Z")

</div>

Hello,

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

Something like that is what I would do.

---

<div class="post-metadata">

**Author:** ![rubynuby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ba9def/32.png) [@rubynuby](https://www.ruby-forum.com/u/rubynuby)\
**Post date:** [January 16, 2008, 1:58am UTC](https://www.ruby-forum.com/t/how-can-i-dry-this-cide/126130/3 "2008-01-16T01:58:58Z")

</div>

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