Невозможно получить доступ к with_scope из миксина - PullRequest
2 голосов
/ 09 февраля 2010

Я просто наткнулся на странную проблему, и я не совсем понимаю, что является причиной этого.

В нашем приложении rails есть миксин 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 будут вести себя как любой другой метод в Model. Я никогда не спотыкался об этом раньше, потому что все методы экземпляра, такие как save, существуют и работают как обычно.

Я все делаю неправильно?

...