application_helper используется в основном для доступа к методам в представлениях - я не верю, что он доступен в контроллере.
Причина, по которой ваш метод 'current_user' работает, в том, что я предполагаю, что вы используете Devise - когда вы вызываете 'current_user', он использует метод Engine, а не ваш собственный.
Чтобы решить эту проблему, запишите новый модуль:
module MyHelper
def current_user
if session[:user_id]
@current_user ||= User.find(session[:user_id])
else
@current_user = nil
end
end
def user_identity
current_user.role if current_user
end
end
А в используемом вами контроллере:
class MyController < ApplicationController
include MyHelper
bla bla bla...
end
Любые методы, определенные в MyHelper, теперь будут доступны в MyController, так как мы включили модуль в контроллер