Чтобы ответить на ваш вопрос напрямую: объект пользователя, найденный по его идентификатору или nil
, если в сеансе нет значения :current_user_id
или если для этого идентификатора не существует объекта пользователя.
В принципе, если @_current_user
уже установлен, то он не изменит его. В противном случае, он проверяет, существует ли session[:current_user_id]
/, и если это по своей природе оператор &&
, правая часть возвращается как значение выражения. Правая сторона в основном ищет пользователя с этим current_user_id
.
Еще проще: Если @_current_user
еще не установлен, то, если сеанс имеет значение current_user_id
, он устанавливает @_current_user
к User
объекту совпадающего идентификатор пользователя.
Небольшая вещь. Почему '@ _current_user' начинается с' _' сразу после '@'? Есть ли какое-нибудь соглашение? – OneZero
@OneZero Nah, это не соглашение, о котором я знаю (в Ruby), но это может быть одно из используемых в приложении, о котором вы говорите. Но да, это просто конвенция, она не имеет особого значения в языке. –