Ruby on rails 如何通过用户注册保留会话数据

Ruby on rails 如何通过用户注册保留会话数据,ruby-on-rails,authentication,ruby-on-rails-3,authlogic,session-variables,Ruby On Rails,Authentication,Ruby On Rails 3,Authlogic,Session Variables,我使用AuthLogic来激活/验证新用户,并且我当前正在使用会话数据,以便系统知道在新用户激活后将其发送到何处(例如显示他们的项目)。因此,它使用了许多变量,比如session[:project_id],当用户第一次激活他们的帐户时,这些变量需要存在 问题是,如果用户激活时会话数据不存在,会发生什么?少数情况: 用户在一个浏览器上注册,然后在另一个浏览器上打开激活电子邮件 用户使用匿名模式注册/激活 用户在激活其帐户前等待一两天 据我所知,使用会话数据会带来一个UX漏洞,因为当它不存在时,

我使用AuthLogic来激活/验证新用户,并且我当前正在使用会话数据,以便系统知道在新用户激活后将其发送到何处(例如显示他们的项目)。因此,它使用了许多变量,比如session[:project_id],当用户第一次激活他们的帐户时,这些变量需要存在

问题是,如果用户激活时会话数据不存在,会发生什么?少数情况:

  • 用户在一个浏览器上注册,然后在另一个浏览器上打开激活电子邮件
  • 用户使用匿名模式注册/激活
  • 用户在激活其帐户前等待一两天
据我所知,使用会话数据会带来一个UX漏洞,因为当它不存在时,用户最终会处于一个没有帮助的位置(或者更糟糕的是,由于预期会话变量不存在而导致500错误)

在我看来,从注册到激活,像project_id(和一些其他变量)这样的信息都必须可靠地存储。我对为这个有限的临时目的创建新的数据库字段持谨慎态度,但我愿意接受所有建议。我怎样才能堵塞这个漏洞


针对奥马尔的回答:

在UserMailer.rb中,我定义了激活指示(user),它向新用户发送激活指示电子邮件。目前,我看到以下情况:

def activation_instructions(user)
  @user = user
  @account_activation_url = activate_url(user.perishable_token)
  mail(:to => "#{user.login} <#{user.email}>", :subject => "Welcome!" )
end
def激活说明(用户)
@用户=用户
@帐户\激活\ url=激活\ url(用户.易腐\令牌)
邮件(:to=>“#{user.login}”,:subject=>“欢迎!”)
结束

如何将get参数添加到此中?假设我有参数project\u id和category\u id?

你可以通过激活电子邮件将该参数作为get参数发送,这将解决所有三个问题,否?

你可以通过激活电子邮件将该参数作为get参数发送,这将解决所有三个问题,否?

我已经在上面添加了一些详细信息,无论何时调用UserMailer.deliver\u activation\u指令,都应该传递project\u id参数并更改电子邮件视图以将其考虑在内。我在上面添加了一些详细信息。不知何故,无论何时调用UserMailer.deliver\u activation\u指令,您还应该传递project_id参数,并更改电子邮件视图以将其考虑在内。