上下文
我正在 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/