Rails (3.2.13) で Ruby (1.9) を使用しており、認証と承認に devise と cancan を使用しています。開発環境で匿名ユーザーと適切に連携するコントローラーにカスタム アクションがあります。Heroku にデプロイすると、同じページで「許可されていません」というエラーが発生しました。RAILS_ENV=production をローカルに設定したところ、同じエラーが発生しました。しかし、RAILS_ENV を開発に戻すと、正常に動作し始めます。
CanCan の環境固有の構成は見当たりません。ドキュメントと例から、これを機能させるためにこれ以上必要なものはないようです。誰か助けてくれませんか?コードは次のとおりです。
config/routes.rb
...
resources :venues do
...
...
collection do
get 'testaction'
end
...
models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.role? :admin
can :manage, :all
else
can :testaction, Venue
end
end
end
controllers/venues_controller.rb
class VenuesController < ApplicationController
before_filter :authenticate_user!, :except => [:testaction] #tried with & w/o this line
load_and_authorize_resource
def testaction
respond_to do |format|
format.html
end
end
...
...
end
members
ルートではなく、ルートの下にカスタム アクションを追加してみましたcollections
が、動作は同じです。
ありがとう!