用户登录后仅显示一次html内容

时间:2014-07-22 04:58:21

标签: ruby-on-rails devise

我正在使用设计 gem来验证我的RoR应用中的用户。我添加了一些逻辑。例如,如果用户已登录,则仅显示某些链接或内容,如<% if user_signed_in? %>,然后是一些内容......以<% end %>结尾

现在,我想要做的是显示内容(例如div,其中包含一个段落)仅第一个会话 - 用户首次登录我的网站。

关于如何在Ruby中实现这种逻辑的任何提示?

3 个答案:

答案 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已登录的次数:

enter image description here

我之前尝试使用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。