私は比較的初心者で、cancanを簡単なプロジェクトで機能させようとしています。Railscastをフォローしてドキュメントを読みましたが、何かが足りません。
私が抱えている問題は2つあります。
- 編集/作成リンクが一般ユーザーに対して正しく非表示になっています。ただし、管理者ユーザーには非表示になっています。
- 上記のリンクを非表示にするためのコードをコメントアウトすると、管理者ユーザーがそれらをクリックすると、非管理者ユーザーに表示されるアクセス拒否メッセージが表示されます。
ですから、私の問題は、アプリが能力を正しくチェックしていないことだと思います。データベースを確認しましたが、このユーザーの役割列に「admin」が正しく入力されています。
これが私のユーザーモデルです:
class User < ActiveRecord::Base
has_secure_password
#this is for authentication
attr_accessible :email, :password, :password_confirmation, :role
validates_uniqueness_of :email
#end of authentication
end
インストラクターコントローラーで、上部に「load_and_authorize_resource」を追加しました。
私のAbility.rbファイルは次のようになります
class Ability
include CanCan::Ability
def initialize(user)
# Define abilities for the passed in user here. For example:
#
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end
私がこのコードを持っている役割に基づいてコントロールを隠している私の見解:
<% if can? :manage, Instructor %>
<td><%= link_to 'Edit', edit_instructor_path(instructor) %></td>
<td><%= link_to 'Destroy', instructor, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
すべての助けは大歓迎です。
ありがとう
スコット