Authlogic - current_user или @current_user? - PullRequest
0 голосов
/ 27 апреля 2010

пожалуйста, помогите мне понять что-то. В примере Authlogic в UsersController всегда используется @current_user, например:

def show
  @user = @current_user
end

(взято из http://github.com/binarylogic/authlogic_example/blob/master/app/controllers/users_controller.rb)

Почему это? В моих контроллерах я использую только current_user вместо @current_user.

И кроме того - Authlogic прекрасно работает для меня, но я не вижу заполненных магических столбцов (например, last_login_at или last_login_ip). Стоит ли как-то специально их инициализировать, кроме добавления в миграцию?

UPD После некоторого исследования я обнаружил, что если есть только поля last_login_at и last_login_ip из «Магических полей», то они не будут заполнены. Если я добавлю полный набор магических полей, он будет отлично работать.

UPD2 Мое беспокойство по поводу current_user касается только UsersController: почему оно имеет @current_user, а не current_user?

Ответы [ 3 ]

1 голос
/ 20 мая 2010

Что касается last_login_at и last_login_ip, есть ли в вашей таблице поля current_login_at и current_login_ip? last_login_at и last_login_ip устанавливаются со значениями current_login_at и current_login_ip до их сброса.

1 голос
/ 27 апреля 2010

current_user обычно это метод, определенный в app/controllers/application_controller.rb, который устанавливает переменную экземпляра @current_user, если она еще не определена - вот пример:

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.record
  end

«Волшебные столбцы» должны быть установлены Authlogic автоматически. Например, если ваш пользовательский контроллер сессий входит в систему:

@user_session = UserSession.new(params[:user_session])
@user_session.save

Authlogic должен написать для вас атрибуты last_login_at и last_login_ip. Больше информации в Authlogic docs в модуле: Authlogic :: Session :: MagicColumns

0 голосов
/ 27 апреля 2010

Я думаю, что код из примера не очень хороший пример.

Вы не должны использовать @current_user для установки переменной @user. Потому что он не будет работать, если метод ApplicationController # current_user не вызывается до показа действия UserController. По сути, они оба одинаковы после того, как current_user вызывается один раз.

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

class UserController < ApplicationController
  def show
    @user = current_user
  end
end

Что касается волшебных колонн, я понятия не имею, почему они не работают на вас.

...