gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中实现这种渐进式参与/延迟注册?

转载 作者:行者123 更新时间:2023-12-04 03:47:24 26 4
gpt4 key购买 nike

很久以前,我遇到了一个网站(不幸的是我丢失了地址,它是某种报纸网站),它允许您像注册用户一样使用所有内容。您可以对文章进行评分、收藏和评论,当您这样做时,它会显示一条谨慎的嵌入式消息,说明您必须注册网站才能保存您的贡献。然后它有一个链接让你看看如果你这样做了你的个人资料会是什么样子,我很惊讶地看到它有我所有的事件;我阅读和保存的文章、评论等。我离开了该站点,当我稍后出于好奇再次访问它时,它仍然保存了我的事件。

我认为这是有史以来最伟大的事情,现在我正在构建具有社交功能的网站,我也想采用这种方法。但我仍然是一个菜鸟,所以我不知道如何去做。 你会怎么做?

最佳答案

我会创建一个 Profile为访问您网站的任何用户自动创建的模型,并添加第一个收藏夹、评价第一个项目等。Profile应该保存到您的数据库中,包括适当的随机和唯一字符串。该字符串可以作为 cookie 存储在客户端,稍后将用于检索您的个人资料。它应该是随机且足够长的,以便您不能轻易篡改您的 cookie 并获取其他匿名人的个人资料,但这并非完全可以避免(因此请注意不要在匿名个人资料中存储敏感数据!)。

用户注册后,您可以关联他们的Profile带着他们的新 User记录并删除 cookie 和唯一字符串标识符。您现在可以根据他们的 User 在他们登录时简单地检索他们的个人资料。记录。
Profile模型可以包含您想要存储的任何信息。

如果你想区分注册用户和匿名用户,你可以创建一个 AnonymousProfile模型和 Profile模型(每个都有不同的属性),并在有人注册时简单地将所有数据从匿名配置文件复制到用户配置文件。

更新:
在整个应用程序中,您可以决定仅在用户登录时使用此信息。您可以定义 before_filter。抓取当前用户,并且仅当有实际用户登录时,才使用配置文件数据:

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

在 Controller Action 中的某处:
if current_profile
# Do stuff with current_profile
# Only available to registered users...
end

您可以稍后更改 current_profile 的实现如果您改变主意并希望匿名配置文件对您的匿名用户有效。

关于ruby-on-rails - 如何在 Rails 中实现这种渐进式参与/延迟注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com