2015-04-03 69 views
0

使用设备用户只需确认他的电子邮件并将其导向登录页面。用户刚刚在Rails Devise中确认

“您的帐户已成功确认,请登录并继续。”

被显示。

我该如何检查用户是否刚刚确认,并只显示一个额外的部分仅用于刚刚确认的用户?

编辑:只是为了说清楚 - 我正在寻找方法来检查视图本身,视图是devise/sessions/new.html.erb。 所以我像这样的:

<% if user was just confirmed %> 
<%= render "the_special_partial" %> 
<% end %> 

目前我可以实现这个作为

<% if flash[:notice] && flash[:notice].index("Your account was successfully confirmed. Sign in to continue.") %> 
    <%= render :partial=>"special_partial" %> 
<% end %> 

但我们都知道有多难看,这是。

“已经回答的问题”将用户重定向到新页面。我想在同一页面进行检查。

+0

这是不同的复制 – thebravoman 2015-04-03 13:21:42

+0

啊,对此感到遗憾。 – 2015-04-03 13:24:15

+0

你可以检查'user.confirmed_at'字段。如果不是零,那么他已经确认。检查它是否最近也是。 – 2015-04-03 13:24:59

回答

0

我建议在用户模型中添加一个名为'welcome'(或左右)的属性。这是一个booelan,它的默认值是false。

如果用户点击邮件中的链接,则可以解析URL是否存在确认标记。如果有一个令牌& &'welcome'== false,则显示new.html的欢迎部分。当您的控制器发送命令以在用户模型中创建confir_at - date时,您将'welcome'设置为true。

因此第二次单击确认链接将阻止欢迎部分,并显示正常的登录页面。

+0

当然这是可能的。但是它需要在模型,数据库,控制器和视图中进行更改。我会说很多。我认为,因为闪存消息已经存在,应该有一种更简单的方法来检查用户是否被确认。 – thebravoman 2015-04-03 21:37:18

+0

您是否尝试过右侧边栏上的链接解决方案? http://stackoverflow.com/questions/10926626/devise-redirect-after-confirmation?lq=1 – Klaus 2015-04-03 23:28:56

+0

我在这个问题上编辑的是 - 说我不想重定向用户。我想根据它是否是新的在页面上呈现sign_in的特定部分。 – thebravoman 2015-04-05 16:30:18