3

状況: デモ期間のある Rails 3.2 アプリ。その後、ユーザーはサービスの支払いを開始する必要があります。

質問: ユーザーが支払い方法を追加しない場合、または支払いプランを選択しない場合、Web アプリの「有料」部分へのユーザー アクセスを制限する推奨される方法は何ですか?

次のようにユーザーをソートするものが必要です。

if user.admin? || user.in_demo || user.has_all_payment_data
  # carry on
elsif user.should_add_payment_method
  # send them to add payment method page
elsif user.should_choose_plan
  # send them to add plan
else
  # redirect to home page or whatever
end

私はbefore_filter、すべてのリクエストでユーザーの支払いステータスをチェックし、それに応じてリダイレクトするアプリケーションコントローラーで始めました(ホームページ/プロファイル編集などの場所ではこれをスキップします)が、より良い方法は、急速に複雑になりすぎており、アプリケーション コントローラーにそのような複雑さをすべて持たせるのが間違っていると感じているからです。cancan などのユーザー ロール ライブラリを見てきましたが、適切なものが見つかりません。

4

2 に答える 2

3

Jonas Nicklas (Capybara と CarrierWave の作成者) による投稿があり、CanCan よりも簡単なアプローチを取る方法を詳細に説明しています。彼のアプローチは、認可ルールを作成するモデルごとに追加の単純な Ruby クラスに基づいています。

Ruby on Rails アプリでの簡単な承認 (Elabs ブログ)

彼らはそのソリューションを Pundit という名前の gem にオフロードしましたが、実際にはゼロから実装できるほど単純に思えます。

評論家の宝石 (GitHub)

于 2013-05-16T23:06:10.593 に答える