before_filter работает не по порядку, нормально работает в dev и ставит env.но не работает над QA Env - PullRequest
0 голосов
/ 22 ноября 2018

У нас есть следующие фильтры в контроллере:

  before_action :authenticate_api_request!, except: [:reply_messages]
  before_action :community_uuid
  before_action :is_user_blocked?, only: [:create, :like, :dislike, :flag, :reply_message]
  before_action :user_confirmed_email?, only: [:create]
  before_action :get_message, only: [:like, :dislike, :flag, :remove, :get_message_json, :reply_message, :reply_messages]
  before_action :get_reply_message, only: [:reply_message]
  before_action :get_group, only: [:create]
  before_action :is_blocked_from_group?, only: [:create, :like, :dislike, :reply_message]

и порядок их выполнения:

user_confirmed_email?
get_message
get_reply_message
authenticate_api_request!
community_uuid
is_user_blocked?
get_group
is_blocked_from_group?

Проблема здесь authenticate_api_request!, community_uuid and is_user_blocked?вызывается после user_confirmed_email?.

Он работает должным образом в среде разработки и промежуточной среды, но не работает с одним и тем же кодом на сервере qa, поэтому не удалось понять, почему это произошло, даже повторить тот же код.

1 Ответ

0 голосов
/ 22 ноября 2018

Проверка Порядок цепочек фильтров и этот другой ответ .

Вы должны указать :prepend_before_filter, чтобы ваши фильтры выполнялись в начале цепочки.

Обратите внимание, что :prepend_before_action является псевдонимом :prepend_before_filter, prepend_before_action .

Я сам не пробовал, но вы можете написать что-то вроде:

  before_action :user_confirmed_email?, only: [:create]
  before_action :get_message, only: [:like, :dislike, :flag, :remove, :get_message_json, :reply_message, :reply_messages]
  before_action :get_reply_message, only: [:reply_message]
  before_action :get_group, only: [:create]
  before_action :is_blocked_from_group?, only: [:create, :like, :dislike, :reply_message]  
  prepend_before_action :is_user_blocked?, only: [:create, :like, :dislike, :flag, :reply_message]
  prepend_before_action :community_uuid
  prepend_before_action :authenticate_api_request!, except: [:reply_messages]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...