承認されていないユーザーがページにアクセスするのを防ぐために、before フィルターを使用しようとしています。
承認されていないユーザーをチェックするために、/lib フォルダーの .rb ファイルで定義されたメソッドがあります (さまざまなコントローラーとビューにあるメソッドがいくつかあります)。メソッドは check_user_for_current_approval(user_id) です。
私のコントローラーでは、次のバリエーションを試しました (私は RubyMine を IDE として使用していますが、構文エラーがあることを示すものではありませんでした):
before_filter(:only => [:new]) do |c|
c.check_user_for_current_approval current_user.id
end
次のエラーメッセージが表示されました。
NoMethodError in PaymentsController#new
private method `check_user_for_current_approval' called for #<PaymentsController:0x007ff06784f148>
次の構文:
before_filter(:only => [:new]) do |c|
c.send (:check_user_for_current_approval, current_user.id)
end
次のエラーが発生します。
SyntaxError in PaymentsController#new
/app/controllers/payments_controller.rb:9: syntax error, unexpected ',', expecting ')'
c.send (:check_user_for_current_approval, current_user.id)
^
/app/controllers/payments_controller.rb:9: syntax error, unexpected ')', expecting keyword_end
/app/controllers/payments_controller.rb:130: syntax error, unexpected $end, expecting keyword_end
次の構文を使用します。
before_filter(:only => [:new]) { check_user_for_current_approval(current_user.id) }
ページに直接移動します (フィルターは効果がありません)。さまざまなステートメントは、StackOverflow で見た回答からのものです。