如何在 rails ruby 的设计中访问现有用户电子邮件

How to access existing user email in devise in ruby on rails

我在 rails 上使用 ruby 和 Devise gem 来验证用户。每次新用户使用 his/her 电子邮件地址登录时,我都可以看到设计正在为该用户分配新的用户 ID 并在那里注册电子邮件地址。现在我想为所有第一次登录的用户显示一条欢迎消息(我不希望在他们第二次或第三次登录时出现此消息)。 要显示消息,我想检查 current_user.email 与用户 table 中所有注册的电子邮件(这里的逻辑是:如果用户已经存在于用户 table 中,那么我可以放心地假设用户已经访问过该网站,所以我阻止显示欢迎)。我不确定如何访问 table 中的所有电子邮件 ID?还有在哪里做这个检查。我希望此欢迎消息成为用户在登录成功后看到的第一件事。有谁能帮忙吗

我尝试在会话控制器中使用 "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 的全局变量,以便我可以使用它的值来检查用户是否首次登录。

要在用户首次登录您的应用时显示一条消息,为什么不使用 sign_in_count?

这避免了您获取数据库中的所有电子邮件地址来检查它是否已经存在

sign_in_countusers table 中的一列。应该是:

# sessions_controller.rb
def create
  super # just call predefined action 
  set_flash_message!(:notice, :signed_in) if resource.sign_in_count == 1
end