【发布时间】:2019-05-27 05:46:46
【问题描述】:
我正在使用带有 Devise gem 的 ruby on rails 来验证用户身份。每次新用户使用他/她的电子邮件地址签名时,我都可以看到设计正在为该用户分配新的用户 ID 并在那里注册电子邮件地址。现在我想为所有第一次使用的用户显示一条欢迎消息(我不希望在他们第二次或第三次登录时出现此消息)。 为了显示消息,我想检查 current_user.email 与用户表中所有注册的电子邮件(这里的逻辑是:如果用户已经存在于用户表中,那么我可以安全地假设用户已经访问过该网站,所以我阻止显示欢迎)。我不确定如何访问表中的所有电子邮件 ID?还有在哪里做这个检查。我希望此欢迎消息成为用户在登录成功后立即看到的第一件事。谁能帮忙。
我尝试在会话控制器中使用“资源”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 的全局变量,以便我可以使用它的值来检查用户是否第一次登录。
【问题讨论】:
-
新用户记录在注册时创建,而不是在首次登录时创建。如果用户在注册后自动登录,您可以自定义 Registrations#create,否则自定义 Sessions#create。在后一种情况下,请按照答案中的建议检查
sign_in_count -
当我在 sessionController # create 中使用“sign_in_count”时,我收到错误消息:未定义的局部变量或方法 `sign_in_count' for #<:sessionscontroller:0x00007f21e4222380> 你的意思是?退出
-
你如何使用它?向问题添加代码
-
@Vasilisa 我已按照您的要求添加了代码。请告诉我我哪里出错了。
标签: ruby-on-rails devise