Доступ к вспомогательным методам плагина и библиотеке на рельсах

В настоящее время я удаляю сообщество с помощью Community Engine, но мне нужно добавить несколько моделей.

Проблема в том, что мне нужны вспомогательные методы, которые использует CE, но когда я пытаюсь получить доступ к новым разделам сайта, я получаю неопределенный метод (как показано ниже)

undefined method `logged_in?' for #<ActionView::Base:0x1048f3748>

Вошедший_в? метод находится в vendor/plugins/community_engine/lib/authenticated_system.rb

Этот метод определяется как вспомогательный метод следующим образом:

# this is at vendor/plugins/community_engine/lib/authenticated_system.rb
def self.included(base)
  base.send :helper_method, :current_user, :current_user_session, :logged_in?, :admin?, :moderator?
end

Как я могу заставить мое приложение rails загружать все помощники и методы, объявленные в lib моих плагинов?


person Hock    schedule 27.02.2010    source источник
comment
ты include AuthenticatedSystem в своем ApplicationController?   -  person alex.zherdev    schedule 27.02.2010
comment
Я могу добавить AuthenticadedSystem, потому что это модуль, но я не могу включать/требовать помощников =S Есть идеи?   -  person Hock    schedule 27.02.2010


Ответы (2)


Вы можете отредактировать свой файл vendor/plugins/community_engine/init.rb и добавить эту строку для его загрузки:

ActionView::Base.send(:include, MyHelper)

и переместите помощника в вашу папку vendor/plugins/community_engine/helpers

module MyHelper
  def my_method_here
    ...
  end
end

Надеюсь, это поможет!

person Olivier Grimard    schedule 04.11.2011

Большинство сайтов, с которыми я работал, физически копируют файл authenticated_system.rb в #{RAILS_ROOT}/lib и возвращают его.

Таким образом, вы можете переопределить методы, если вам нужно.

person Taryn East    schedule 27.02.2010
comment
А как же помощники? Я могу включить модуль, но все равно проблемы с хелперами =S - person Hock; 28.02.2010
comment
Библиотека, о которой я упоминал выше, включает в себя все вспомогательные методы. Если вы скопируете его в каталог lib, то используйте include AuthenticatedSystem в своем контроллере — он найдет вспомогательные методы. - person Taryn East; 28.02.2010
comment
Я скопировал модуль в каталог RAILS_ROOT/lib, но помощники (vendor/plugins/community_engine/app/helpers/) по-прежнему вызывают у меня проблемы =S Я не могу использовать эти методы в своих пользовательских моделях =S - person Hock; 01.03.2010
comment
подождите - зачем они вам в вашей модели? помощник, такой как залогиненный, является методом управления доступом на уровне контроллера/представления. - person Taryn East; 22.11.2011