0

我正在使用 CanCan 在我的应用程序中定义能力。

问题是如何通过关联来定义属于用户的模型的能力。

例如,这是有效的,因为 Campaign 有一个affiliate_id字段

can :manage, Campaign, :affiliate_id => affiliate.id

但是,Affiliates拥有SubscriptionsMessages通过Keywords. Keywords属于一个Campaign

所有协会工作正常。但是,我不确定如何仅限制SubscriptionsMessages限制current_user.

这些是我目前的联想

# affiliate.rb
has_many :keywords, :through => :campaigns  
has_many :campaigns

# campaign.rb
belongs_to :affiliate
has_many :keywords
has_many :subscriptions, :through => :keywords
has_many :messages, :through => :subscriptions

# keyword.rb
has_many :subscriptions
has_many :messages
belongs_to :campaign

# message.rb
belongs_to :user
belongs_to :campaign
belongs_to :subscription
belongs_to :keyword

# subscription.rb
belongs_to :campaign
belongs_to :affiliate
belongs_to :keyword
has_many :messages

另外,(奖励问题),如果用户是管理员,我如何显示所有对象?我有类似的东西,但它没有检索所有对象。

if affiliate.status == "admin"
  can :manage, :all
end
4

0 回答 0