У меня проблема с моим rails-App.Я использую cancan, чтобы скрыть некоторые ссылки от определенных пользователей.Я не получаю никаких ошибок, и роль пользователя правильно распознается.Но что бы я ни пытался, моя ссылка никогда не показывается.Может? -Метод всегда возвращает истину.Это мой класс способностей:
class Ability
include CanCan::Ability
def initialize(user)
current_user ||= User.new # guest user (not logged in)
puts "Debug"
if current_user.role?(:Admin)
can :manage, Prof
else
if current_user.role?(:Proff)
can :manage, [Exam, Note, Student,Break,Appointment]
else
if current_user.role?(:Student)
can :update, Appointment
can :show, Exam
end
end
end
end
end
Это, на мой взгляд, @exam определенно не ноль.Я также попробовал экзамен и: экзамен, ничего не работает.
<% if can? :edit, @exam%>
<%= link_to 'Bearbeiten', edit_exam_path(@exam) %> |
<%= link_to 'Alle Prüfungen', exams_path %>
<% end%>
Я не знаю, если это важно, но это глава моего контроллера:
class ExamsController < ApplicationController
before_filter :login_required
skip_authorization_check
...
Мой экзаменМодель:
class Exam < ActiveRecord::Base
belongs_to :prof
validates_presence_of :prof_id,:title,:deadline
has_many :examdates, :dependent => :destroy
accepts_nested_attributes_for :examdates,
:allow_destroy => true#, :reject_if => proc {| a| a[:date].blank? }
end
В консоли я попробовал
Exam.accessible_by(ability)
и получил [].Я использую cancan 1.6.7, rails 3.1.0 и ruby 1.8.7.
Я действительно надеюсь, что кто-то может понять, что я делаю не так.
Заранее спасибо!