views:

718

answers:

1

I have named_scope which is reused in multiple ActiveRecord models. For example:

  named_scope :limit, lambda {|limit| {:limit => limit}}

What is the best practice to extract this code to be shared across models. Is it possible to extract it to a module or should I rather reopen ActiveRecord::Base class?

+14  A: 

Use a module. Something like this should work:

module CommonScopes
  def self.included(base)
    base.class_eval do
      named_scope :limit, lambda {|limit| {:limit => limit}}
    end
  end
end

Then just include CommonScopes and you'll be good to go.

Ben Scofield