我会创建一个Profile
模型,该模型会自动为访问您网站的任何用户创建并添加第一个收藏夹、对第一个项目进行评分等。Profile
应该将其保存到您的数据库中,包括一个适当的随机且唯一的字符串。该字符串可以作为 cookie 存储在客户端,稍后将用于检索您的个人资料。它应该是随机的并且足够长,这样您就不会轻易篡改您的 cookie 并获取其他匿名人的个人资料,但这并非完全可以避免(因此请注意,您不要在匿名个人资料中存储敏感数据!)。
用户注册后,您可以将他们Profile
与他们的新User
记录相关联并删除 cookie 和唯一的字符串标识符。您现在可以在他们登录时根据他们的User
记录简单地检索他们的个人资料。
该Profile
模型可以包含您想要存储的任何信息。
如果您想区分注册用户和匿名用户,您可以创建一个AnonymousProfile
模型和一个Profile
模型(每个模型具有不同的属性),并在有人注册时简单地将所有数据从匿名配置文件复制到用户配置文件。
更新:
在您的整个应用程序中,您可以决定仅在用户登录时使用此信息。您可以定义before_filter
获取当前用户的 a,并且仅当有实际用户登录时,您才使用配置文件数据:
class ApplicationController < ActionController::Base
before_filter :fetch_user_data
def fetch_user_data
@current_user = ... # Work your magic to get current user
end
private
def current_profile
@current_user and @current_user.profile # Use profile association
end
end
在控制器动作的某处:
if current_profile
# Do stuff with current_profile
# Only available to registered users...
end
current_profile
如果您改变主意并希望匿名配置文件对您的匿名用户生效,您可以稍后更改实施。