ruby-on-rails - Rails 3.1 只有用户可以编辑他们的个人资料

标签 ruby-on-rails ruby-on-rails-3 authentication

我正在通过做和测试事情来慢慢学习 Rails,但我遇到了障碍。我有一个简单的 Rails 3.1 应用程序,并且有一个简单的用户注册/登录流程。我没有使用 devise,因为我宁愿自己学习如何做。

目前用户可以注册、登录和退出。但我希望他们能够编辑他们的个人资料。目前,任何用户都可以访问 users/1/edit/,即使他们的 ID 未设置为 1。我如何检查 current_user 是否与 url 匹配?我知道我需要对 users_controller 的编辑操作进行某种类型的过滤器。

这是我目前拥有的

users_controller.rb

before_filter :is_owner, :only => [:edit, :update, :destroy]

application_controller.rb

helper_method :is_owner
def is_owner
end

我的 is_owner 函数中应该包含什么?

最佳答案

我猜您的问题在于从 URL 获取参数。这可以通过 params 数组来完成:

params[:id]

这样(取决于您的路由配置!),您可以执行类似的操作

def is_owner?
  current_user.id == params[:id]
end

关于ruby-on-rails - Rails 3.1 只有用户可以编辑他们的个人资料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622772/

相关文章:

ruby-on-rails - Rails 3.2.8,只有重启服务器才会取消缓存模型

asp.net - "Your login attempt was not successful. Please try again"在 asp.net 中,尽管密码已重置

ruby-on-rails - 如何阻止 faker gem 在 ruby​​ on rails 中失败的用户名唯一性验证?

javascript - 与 webpack 一起安装时未定义 React

ruby-on-rails-3 - Rails 3.2 是否有涵盖向用户分配管理属性的教程?

ruby-on-rails-3 - 如何测试 - 使用 rspec - 创建电子邮件时使用什么模板? (导轨 3.0.7)

ruby-on-rails - rails : HOST Header Attack vulnerability

ruby-on-rails - 以简单的形式设置类和值(Rails)

php - 检查用户是否登录

AngularJs Web 服务用户帐户