0

Nitrous.io で Active Admin を使用して Rails アプリを作成しましたが、すべてがその開発環境で動作しています。認証/承認にDevise/CanCanCanを使用しています

Heroku にプッシュして Active Admin にアクセスしようとすると、次のエラーが表示されます。

Started GET "/admin" for 91.226.23.198 at 2014-09-06 21:15:49 +0000                                                                                                                                                            
Processing by Admin::ProductsController#index as HTML                                                                                                                                                                          
NoMethodError (undefined method `include?' for nil:NilClass):                                                                                                                                                                  
app/models/user.rb:8:in `role?'                                                                                                                                                                                              
app/models/ability.rb:6:in `initialize'   

私のユーザーモデルは次のようになります:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, 
         :recoverable, :rememberable, :trackable, :validatable

  def role?(r)
      role.include? r.to_s
    end
end

アビリティ.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
      if user.role? :administrator
        can :manage, :all
      elsif user.role? :moderator
          can :manage, Product
          can :manage, User, :id => user.id
              cannot :destroy, User
          #can :read, ActiveAdmin::Page, :name => "Dashboard"
          can :read, ActiveAdmin::Page, :name => "Contact Us"
          can :read, ActiveAdmin::Page, :name => "About x"
          can :read, ActiveAdmin::Page, :name => "FAQ"
          #can :manage, [Page, Unit, Category, News]
    else
        can :read, Product
        can :manage, User, :id => user.id
            cannot :destroy, User
        #can :read, ActiveAdmin::Page, :name => "Dashboard"
        can :read, ActiveAdmin::Page, :name => "Contact Us"
        can :read, ActiveAdmin::Page, :name => "About x"
        can :read, ActiveAdmin::Page, :name => "FAQ"
    end
end
end

私は何を間違っていますか?

herokuサーバーを何度も再起動しようとしました。

助けてくれてありがとう。

乾杯!

4

1 に答える 1

0

わかりました最終的にこれに対する解決策を得ました。問題は、Active Admin によって作成されたデフォルトのユーザーにロールが含まれていなかったため、ユーザーにロール = 'administrator' をシードし、このユーザーでログインでき、すべてが機能したことでした。

すべての助けをありがとう。

于 2014-09-10T21:13:19.527 に答える