我正在通过做和测试事情来慢慢学习 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/