1

一般的な質問があります...

Michael Hartl のチュートリアルの例を使用して、ユーザー モデルを作成しました。私が問題を抱えているのは、他のユーザーの情報を取得して URL を変更することです。id -> name から変更される Friendly_id を使用していますが、上部の名前を別のユーザーに変更すると、そのユーザーのホームページが表示されます。ユーザーがそれを実行できないように制限したい。

これは、Devise や CanCan などの実装なしで可能ですか? ユーザーが URL バーで名前を変更しようとしているかどうかを確認する検証をスローしようとしています。つまり、名前が現在ログインしているユーザーであるかどうかを確認し、そうでない場合は現在のユーザーにリダイレクトします。

モデル情報が必要な場合は、お知らせください。

ティア

4

2 に答える 2

2

特定のユーザーに制限するすべてのモデルには、ユーザーモデルへの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 に答える