You can use default_scope :
class ExampleModel < ActiveRecord::Base default_scope :conditions => ["status = ?", "active"] end
If you want to use this in all your models, you can either subclass ActiveRecord::Base , or get it in all your models (it may not work with single-table inheritance):
class MyModel < ActiveRecord::Base default_scope :conditions => ["status = ?", "active"] end class ExampleModel < MyModel end
... or you can set default_scope to ActiveRecord::Base yourself (it can be unpleasant if you decide that one model should not have this area by default):
class ActiveRecord::Base default_scope :conditions => ["status = ?", "active"] end class ExampleModel < ActiveRecord::Base end
As mentioned in the klochner comments, you can also consider adding named_scope to ActiveRecord::Base called active , for example:
class ActiveRecord::Base named_scope :active, :conditions => ["status = ?", "active"] end class ExampleModel < ActiveRecord::Base end ExampleModel.active # Return all active items.
molf
source share