Методы Рубин, заканчивающийся на '?' позволили изменить вещи?

Я шел через какой-то код в одном из наших Рор приложений в нашей компании. И я заметил, что иногда используется способ с вопросительным знаком, подобное следующий метод используется в одном из наших контроллеров.

  # readonly checker
  # @param url to redirect or nil
  # if url set up, goes to url with note "not allowed because readonly"
  # else @returns true / false
  def readonly?(url = nil)
    if current_user_can_access?(:readonly)

      message = I18n.t(:auth_readonly)
      if request.xhr?
        response.status = 403
        render json: { error: message }
      else
        redirect_to url, notice: message unless url.nil?
      end
      true
    else
      false
    end
  end

Мой вопрос, Является ли это приемлемым (и обычно), что также перенаправляет куда-то.

Я привык реализации методов вопросительный знак, что только возвращают значения, конвертируемых в логическое и не вносить изменения в модели, ДБ...

0
2019-09-17 21:04:59
источник
1 ответ

Если вы спрашиваете, если пользователь все еще находится после перехода, да, это все-таки дело. Вы просто добавить проверку подлинности состояние слушателя на страницах, где вы ожидаете, что пользователь должен пройти проверку подлинности, и обращаться к базе данных только после этого слушатель указывает, что пользователь присутствует.

+8
2019-09-17 21:12:43

Посмотрите другие вопросы по меткам