Ruby on Railsにと工夫と行動(編集/削除)を制限するための最良の方法

StackOverflow https://stackoverflow.com/questions/3834321

  •  26-09-2019
  •  | 
  •  

質問

私は、RubyでRailsのにかなり新しいですし、今の私はシンプルなアプリをやっています。このアプリでは、ユーザーは、多くのアイテムを作成することができますし、私は認証のために工夫を使用しています。私はあなたが削除項目(チーム、選手など)と私はそれを行う方法を順に所有者であることを確認したい勿論今ます:

def destroy
    @team = Team.find(params[:id])
    if current_user.id == @team.user_id 
      @team.destroy    
      redirect_to(teams_url, :notice => 'The team was deleted.')
    else
      redirect_to root_path
    end      
end

これが最善の方法ですか?私は、モデル内のメソッドを置くことについて考えていたが、私は確かに、私はそこからCURRENT_USERにアクセスすることができないのです。私もbefore_filer考えていた、ような何かます:

before_filter :check_ownership, :only => [:destroy, :update]

Iその場合、私は(すべてでは、これが「USER_ID」 - フィールドを有することに関するオブジェクト)コードにすべてのオブジェクトの唯一の方法が必要な場合

役に立ちましたか?

解決

私は入れて自分のアプリケーションのコントローラで

before_filter :authorize

def authorize
  false # Or use code here to check if user is admin or not
end

その後、私は様々なアクションへのアクセスを許可するように私の実際のコントローラでのauthorizeメソッドをオーバーライドします。

他のヒント

あなたはあなたの認証(工夫)の上に、認可ソリューションを探しています。

あなたは何のモデルに現在のユーザーにアクセスすることはできません。私は Makandraのイージス艦は、認可のためにを使用して、成功の公正な量を持っていました。それはあなたが役割がそれぞれの役割に起因する権限を指定作成することができます。それは方法は、私もクリアランスでそれを使用していたことはかなりとらわれないですが、ドキュメントはかなり良いですし、私はそれが考案して罰金を動作します知っています。ユーザーが指定し、現在のユーザーが適切な行動を取ることができることを確認することができますので、それはまた、あなたの権限に暗黙の「CURRENT_USER」を渡します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top