2

奇妙な問題に出くわしましたが、何が原因なのかよくわかりません。

Rails アプリで mixin を作成しましょうMixin:

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

他の場所でモデルクラスにinclude編集されます:

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

を呼び出すModel.new.fooと、エラーが発生します。NoMethodError: undefined method with_scope

次に、fooメソッドを次のように変更しました。

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

しかし、これもエラーになります。NoMethodError: protected method with_scope called

これは奇妙に思えます。mixin メソッドは .NET の他のメソッドと同じように動作すると予想していましたModelsaveのようなすべてのインスタンスメソッドがそこにあり、通常どおり機能するため、これまでつまずいたことはありません。

私はそれをすべて間違っていますか?

4

0 に答える 0