gpt4 book ai didi

ruby-on-rails - Rails 方法在没有 session 的情况下限制页面访问

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:07 25 4
gpt4 key购买 nike

上下文

我正在 http://hivechatter.com 构建一个 super 简单、让你大吃一惊的性感注册页面 | . (是的,我对她有强烈的感觉。)

根页面是新用户操作,我只在其中请求电子邮件。如果访问者提交了有效的电子邮件,则会创建一个新用户,我会重定向到该用户的编辑页面并询问其他可选信息。

问题

编辑页面 url 是通常的形式:http://hivechatter.com/users/19/edit .只需使用他们选择的任何 ID 号访问此 URL,即可访问任何用户的编辑页面。

问题

如何限制对编辑用户页面的访问,使其只能访问一次,并且只能在从根新用户页面创建该 user_id 后立即访问?

我能想到多种探索的方法。我会很感激关于执行此操作的最优雅的 rails 方法的指示。请注意,我不需要任何其他功能,如 session 等。这两个步骤的注册过程是我现在需要的范围。

谢谢!

最佳答案

向您的用户表添加新列。让它成为 opened_once:boolean 和 DEFAULT false

然后在你的 users_controller

def edit
@user = User.find( params[:id], :conditions => ['opened_once => ?', false] ) rescue ActiveRecord::RecordNotFound
@user.update_attribute :opened_once, true
...
end

所以现在当您重定向到编辑页面时,它只能在创建新用户后立即显示一次

UPD

你有什么可以做更多的Rails方式吗?无需向您的数据库添加新内容等等。您可以完全删除 edit 操作,这样您的编辑 View 将在创建时呈现:

def create
@user = User.new params[:user]
respond_to do |format|
if @user.save
format.html{ render :action => :edit }
else
format.html{ render :action => :new }
end
end
end

如果验证通过并创建了个人资料,用户只会看到一次编辑表单。

所以这是特定的 “Rails 方式” :)

关于ruby-on-rails - Rails 方法在没有 session 的情况下限制页面访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370837/

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