2

私はRubyOnRailsにかなり慣れていないので、今は簡単なアプリを使っています。このアプリでは、ユーザーは多くのアイテムを作成でき、認証にはdeviseを使用します。もちろん、アイテム(チーム、プレーヤーなど)を削除するには、あなたが所有者であることを確認したいと思います。現在の方法は次のとおりです。

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]

その場合、すべてのオブジェクトに対して1つのメソッドのみをコーディングする場合(これに関連するすべてのオブジェクトには「user_id」フィールドがあります)

4

2 に答える 2

1

私のアプリケーションコントローラーには、次のように記述します。

before_filter :authorize

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

次に、実際のコントローラーのauthorizeメソッドをオーバーライドして、さまざまなアクションにアクセスできるようにします。

于 2010-09-30T20:02:50.080 に答える
0

認証に加えて承認ソリューションを探しています(考案)

モデル番号で現在のユーザーにアクセスすることはできません。マカンドラのイージスを承認に使用して、かなりの成功を収めました。これにより、各ロールに起因する権限を指定するロールを作成できます。ドキュメントは非常に優れており、Deviseで正常に機能することはわかっています。そのようにかなり不可知論的であり、Clearanceでも使用しました。また、暗黙の「current_user」をアクセス許可に渡すため、現在のユーザーが適切なアクションを実行できることを指定および確認できます。

于 2010-09-30T20:03:18.020 に答える