views:

142

answers:

0

I just stumbled over a weird problem, and I don't really understand what is causing this.

In our rails app, let's have a mixin Mixin:

module Mixin
  def foo
    with_scope :find => ... do
      ...
    end
  end
end

which is includeed into a model class elsewhere:

class Model < ActiveRecord::Base
  include Mixin
  ...
end

calling Model.new.foo results in an error: NoMethodError: undefined method with_scope

I then changed the foo method to:

  def foo
    self.class.with_scope :find => ... do
      ...
    end
  end

But this also results in an error: NoMethodError: protected method with_scope called

This seems odd. I would have expected that the mixin methods would behave like any other method in Model. I never stumbled over this before, because all the instance methods like save are there and work as usual.

Am I doing it all wrong?