奇妙な問題に出くわしましたが、何が原因なのかよくわかりません。
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 の他のメソッドと同じように動作すると予想していましたModel
。save
のようなすべてのインスタンスメソッドがそこにあり、通常どおり機能するため、これまでつまずいたことはありません。
私はそれをすべて間違っていますか?