Rail 的康康康深 has_many 通过
Rail's cancancan deep has_many through
当 User 和 ClassD 之间的关联变深时,我在定义能力时遇到问题。
User < ActiveRecord::Base
has_many :classB
has_many :classC, through classB
has_many :classD, through classB
end
ClassB < ActiveRecord::Base
belongs_to :User
has_many :classC
has_many :classD, through classC
end
ClassC < ActiveRecord::Base
belongs_to ClassC
has_many :ClassD
end
ClassD < ACtiveRecord::Base
belongs_to Class C
end
如何用 cancancan 定义能力,例如:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :manage, ClassD do |cd|
cd.user_id: user.id
end
end
end
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :manage, ClassD do |cd|
user.cds.exists?(cd.id)
end
end
end
当 User 和 ClassD 之间的关联变深时,我在定义能力时遇到问题。
User < ActiveRecord::Base
has_many :classB
has_many :classC, through classB
has_many :classD, through classB
end
ClassB < ActiveRecord::Base
belongs_to :User
has_many :classC
has_many :classD, through classC
end
ClassC < ActiveRecord::Base
belongs_to ClassC
has_many :ClassD
end
ClassD < ACtiveRecord::Base
belongs_to Class C
end
如何用 cancancan 定义能力,例如:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :manage, ClassD do |cd|
cd.user_id: user.id
end
end
end
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :manage, ClassD do |cd|
user.cds.exists?(cd.id)
end
end
end