0

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が、動作は同じです。

ありがとう!

4

1 に答える 1

2

ユーザーでも同様のエラーが発生します。次に、役割を承認および認証するためのデバイスを使用して cancan の流れを理解するための適切な作業リポジトリを見つけました。

リポジトリから提供される指示に従い、コードの手順を段階的に一致させてください。

https://github.com/RailsApps/rails3-bootstrap-devise-cancan

authorize_resource :class => falseコントローラーでorenter code hereの代わりに使用することをお勧めし load_and_authorize_resourceます。役立つと思います。

ありがとう。

于 2013-07-04T18:38:33.627 に答える