我正在使用带有Devise gem的红宝石对用户进行身份验证。每次有新用户使用他/她的电子邮件地址签名时,我都能看到装置正在为该用户分配新的用户ID并在其中注册电子邮件地址。现在,我想为所有首次使用的用户显示欢迎消息(我不希望该消息在他们第二次或第三次登录时出现)。 为了显示该消息,我想对照user表中的所有已注册电子邮件检查current_user.email(逻辑是:如果该用户表中已经存在该用户,那么我可以安全地假设该用户已经访问了该网站,因此可以防止显示欢迎词)。我不确定如何访问表格中的所有电子邮件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的全局变量,以便我可以使用它的值来检查用户是否已首次登录。
答案 0 :(得分:2)
要在用户首次登录您的应用程序时显示一条消息,为什么不使用sign_in_count?
这避免了您获取数据库中的所有电子邮件地址以检查其是否已经存在
答案 1 :(得分:1)
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