Как получить доступ к существующей электронной почте пользователя в ruby ​​на рельсах - PullRequest
0 голосов
/ 27 мая 2019

Я использую ruby ​​на рельсах с гемом Devise для аутентификации пользователя.Каждый раз, когда новый пользователь подписывает свой адрес электронной почты, я вижу, что устройство назначает этому пользователю новый идентификатор пользователя и регистрирует там адрес электронной почты.Теперь я хочу отобразить приветственное сообщение для всех пользователей, впервые работающих (я не хочу, чтобы это сообщение появлялось при входе во второй или третий раз).Чтобы отобразить сообщение, я хочу проверить current_user.email по всем зарегистрированным электронным письмам в пользовательской таблице (логика здесь такова: если пользователь уже существует в пользовательской таблице, то я могу смело предположить, что пользователь уже посетил веб-сайт, поэтому я запрещаюДобро пожаловать отображается).Я не уверен, как получить доступ ко всем идентификаторам электронной почты в таблице?Также, где сделать эту проверку.Я хочу, чтобы это приветственное сообщение было первым, что увидит пользователь при успешном входе в систему.Может кто-нибудь помочь, пожалуйста.

Я пытался использовать "resource" resource_name "в контроллере сессий, но ничего не работает. Не уверен, что они даже отдаленно актуальны.

    # POST /resource/sign_in
    def create       
      self.resource = warden.authenticate!(auth_options)
      $sign = sign_in_count
      set_flash_message!(:notice, :signed_in)
      sign_in(resource_name, resource)
      yield resource if block_given?
      respond_with resource, location: after_sign_in_path_for(resource)      
    end

Я пытаюсь назначитьsign_in_count для входа пользователя в глобальную переменную с именем $ sign, чтобы я мог использовать его значение, чтобы проверить, выполнил ли пользователь первый раз или нет.

Ответы [ 2 ]

2 голосов
/ 27 мая 2019

Для отображения сообщения при первом входе пользователя в приложение, почему бы не использовать sign_in_count?

Это позволяет избежать получения всех адресов электронной почты в вашей базе данных, чтобы проверить, существует ли он уже

1 голос
/ 28 мая 2019

sign_in_count - это столбец в таблице users.Должно быть:

# sessions_controller.rb
def create
  super # just call predefined action 
  set_flash_message!(:notice, :signed_in) if resource.sign_in_count == 1
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...