Какова основная задача || = и вспомогательного метода в RoR? - PullRequest
0 голосов
/ 13 января 2020

Например, у меня есть действующий сервер на ruby на рельсах. Мой контроллер имеет этот сегмент кода. Можете ли вы объяснить мне больше о || = и helper_method. Что они делают?

  def current_user
        @current_user ||= User.find(session[:user_id]) if session[:user_id]
      end
      helper_method :current_user

Ответы [ 3 ]

1 голос
/ 13 января 2020
x ||= y

является сокращением для

x = x || y

. Это означает, что x становится y, если x не соответствует действительности.

В вашем контексте это означает, что @current_user будет назначено User.find..., если он не был назначен. Это форма напоминания.

0 голосов
/ 13 января 2020

x ||= y - это то же самое, что и x = x || x = y, что означает, что если x не равно nil, оно сохранит значение x таким же, иначе оно переназначит y на x.

Пример 1.

x = nil
y = 2
x ||= y # this assigns x to 2
puts(x) # $> 2

Пример 2.

x = 5
y = 2
x ||= y # this assigns x to 5
puts(x) # $> 5

Вспомогательные методы в рельсах - это методы, которые объявлены с использованием helper_method: method_name

Это используется в представлении для отображения значения вместо Чтение документация здесь

0 голосов
/ 13 января 2020

x ||= y, если вы упростите эту строку кода, она будет похожа на строки ниже

if x.nil? x = y else x = x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...