3
如何在不定義類能力的情況下定義cancan中的實例能力?如何定義cancan中的實例能力而不定義類能力?
我想允許:manage
行動特別Course
的情況下,不是Course
類。
# ability.rb
can :manage, Course do |course|
# Check if the user is a helper for this course
CourseRole.get_role(user, course) == "helper"
end
這個實例變量的正常工作:
# some_view.rb
can? :manage, @course # checks the instance to see if :manage is allowed
但是,如果我這樣做:
# some_view.rb
can? :manage, Course
它總是返回true,這是不好的。
一些背景:
class User < ActiveRecord::Base
has_many :course_roles
has_many :courses, :through => :course_roles
...
class CourseRoles < ActiveRecord::Base
belongs_to :user
belongs_to :course
...
class Courses < ActiveRecord::Base
has_many :course_roles
has_many :users, :through => :course_roles