Когда вы говорите <%= current_user.id %>
по вашему мнению, вы вызываете метод current_user
, а затем вызываете метод id
для возвращаемого значения.Затем вы говорите <%= current_user.first_name %>
, что вызывает current_user
(снова), а затем вызывается first_name
для того, что возвращается.И так далее.Нет ничего, что автоматически распознало бы, что вы вызываете один и тот же метод, чтобы получить то же возвращаемое значение, а затем оптимизировать все это.
Вы пытаетесь запомнить current_user
(обычная вещь) в концевашего метода:
@current_user ||= user
, но это не помогает, потому что, по-видимому, вся работа выполняется в decode_jwt(cookies.permanent[:jwt_token])
, и вы делаете это каждый раз, независимо от того, что является @current_user
.
Памятка обычно будет выглядеть примерно так:
@current_user ||= decode_jwt(cookies.permanent[:jwt_token])
, так что вы будете перекодировать JWT только один раз (то есть, когда @current_user.nil?
), а затем повторно использовать его.