1

我有一个普遍的问题...

我已经使用 Michael Hartl 的教程示例构建了我的用户模型。我遇到的麻烦是更改 url 并产生其他用户信息。我正在使用从 id -> name 更改的 Friendly_id,但是如果我将顶部的名称更改为另一个用户,它将显示他们的主页。我想限制我的用户这样做。

如果没有实施 Devise 或 CanCan 等,这可能吗?尝试进行验证以检查用户是否尝试更改 url 栏上的名称,即检查名称是否是当前登录的用户,如果不是,则重定向回当前用户。

如果您需要型号信息,请告诉我。

TIA

4

2 回答 2

2

您想要限制为特定用户的所有模型都应该与您的 User 模型具有belong_to关联,以便在您的控制器中执行

current_user.cars

并且您永远不应该在 URL 中传递用户 ID。这假设您正在使用设计。

于 2012-07-26T20:28:14.810 回答
2

您可以像这样before_filter验证UsersController这种情况:

# Each time you make an action on your UsersController this filter will run
before_filter :validate_url_hack

def validate_url_hack
  # Check the params hash to see if the passed :id matches the current user's id
  # (note the .to_i on params[:id], as you are comparing against a Fixnum)
  unless params[:id].to_i == current_user.id
    # This line redirects the user to the previous action
    redirect_to request.referer
  end
end

这只是一个猜测,但我相信这样的事情应该可行。

于 2012-07-26T20:24:05.497 回答