我正在使用设计 gem来验证我的RoR应用中的用户。我添加了一些逻辑。例如,如果用户已登录,则仅显示某些链接或内容,如<% if user_signed_in? %>
,然后是一些内容......以<% end %>
结尾
现在,我想要做的是显示内容(例如div
,其中包含一个段落)仅第一个会话 - 用户首次登录我的网站。
关于如何在Ruby中实现这种逻辑的任何提示?
答案 0 :(得分:1)
Devise有一个名为Trackable的模块,其中包含为您计算用户sign_in的逻辑。来自doc:
sign_in_count - 每次登录时都会增加(按表单, openid,oauth)
只需在模型中添加Trackable模块,然后在代码中添加:
if current_user.sign_in_count == 1
welcome_path
else
#do something else
end
答案 1 :(得分:1)
Tiago Farias
对此是正确的 - sign_in_count
属性的作业是指示user
已登录的次数:
我之前尝试使用Kirti Thorat
执行类似操作,但我们发现Devise
存储sign_in_count
的次数存在问题 - 类似于0
开始的问题1}}或其他什么
-
无论如何,不要打扰Tiago Farias'
回答,你基本上只需要这样做:
<% if user_signed_in && current_user.sign_in_count == "1" %>
HTML here!
<% end %>
答案 2 :(得分:0)
如果您的意思是用户第一次登录您的网站,您可以在用户模型(表格)中添加一个字段,例如布尔看到了。 如果您只是指当前会话,则可以在用户会话中存储信息。 无论哪种方式,如果您想在用户第一次登录时提供新div,只需检查新字段的值(可见)并显示或隐藏html。
已更新
创建迁移
class AddRoleToUser < ActiveRecord::Migration
def change
add_column :users, :already_seen, :boolean, :default => false
end
end
上面的代码将向用户表添加一个新列,其中false为默认值
用户第一次登录already_seen的值将为false 如果already_Seen为false,您将显示html元素,否则您将不会。
显示你的div元素后,你必须将already_seen的值更改为true,例如
user.already_seen = true
user.save()
当用户第一次在您不能显示div元素后记录,因为already_see的值等于true。