разработать и current_user

У меня вопрос по системе разработки.

мой последний рубиновый проект был выполнен с помощью nifty:authentication. С nifty я могу управлять сеансом для current_user и другой информацией из «controller_authentication.rb». Но теперь я хочу добавить новую информацию current_*.

Я хочу знать, где я могу найти метод current_user? где определяется?

с отличным я использовал что-то вроде

@current_company ||= Company.find(session[:company_id]) if session[:company_id]

Благодарю.


person neimad    schedule 16.08.2011    source источник


Ответы (2)


current_user определяется динамически в Devise. Поскольку ваша пользовательская модель на самом деле может быть другой моделью, метод использует имя вашей модели для «отображения», когда он определяет вспомогательный метод current_whatever:

def current_#{mapping}
    @current_#{mapping} ||= warden.authenticate(:scope => :#{mapping})
end

https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb#L123

person Ultrasaurus    schedule 29.07.2012

current_user определяется как помощник в разработке исходного кода. Когда вы устанавливаете devise в свой проект, он также активируется.

person Cydonia7    schedule 16.08.2011
comment
как помощник? у меня нет помощника с именем сеанса, устройства или пользователя в моем приложении. Это где-то еще? - person neimad; 17.08.2011
comment
@neimad: session — метод Rails, devise — метод Devise, а где вы видите пользователя? - person Ryan Bigg; 17.08.2011
comment
хм, я не уверен, что понимаю, что вы спрашиваете? Где я вижу пользователя? - person neimad; 17.08.2011
comment
session управляется внутренними компонентами Rails, devise и user — в разработке. - person Cydonia7; 17.08.2011
comment
Ах, да, я знаю, но раньше, с отличной аутентификацией, я только что изменил control_authentication.rb, чтобы добавить то, что мне нужно. Мне нужно создать новую глобальную переменную (метод?), когда пользователь входит в систему. Например, current_user, я хочу создать current_company и т. д. Но я не могу найти, где создаются current_user при входе в систему. - person neimad; 17.08.2011
comment
Вам не нужно знать, где он находится. Вы можете просто определить новый помощник, содержащий, например, current_user.company. - person Cydonia7; 17.08.2011
comment
Хорошо, спасибо, теперь я могу добавить current_company. а как управлять логином? с помощником приложения тоже? если я хочу перенаправить пользователя в его компанию, когда он войдет в систему? в помощнике я должен определить метод, верно? как настроить вход redirect_to? Спасибо за вашу поддержку - person neimad; 17.08.2011
comment
Вы можете использовать маршрут к своей компании, например это, чтобы перенаправить пользователя в его компанию после входа. - person Cydonia7; 17.08.2011
comment
спасибо, но проблема в том, что субдомен привязан не к пользователю, а к компании, привязанной к пользователю. git rails-subdomain-devise тоже не может мне помочь. Я уже пробовал этот git, и безуспешно. спасибо - person neimad; 17.08.2011