我正在使用 CanCan 在我的应用程序中定义能力。
问题是如何通过关联来定义属于用户的模型的能力。
例如,这是有效的,因为 Campaign 有一个affiliate_id
字段
can :manage, Campaign, :affiliate_id => affiliate.id
但是,Affiliates
拥有Subscriptions
并Messages
通过Keywords
. Keywords
属于一个Campaign
。
所有协会工作正常。但是,我不确定如何仅限制Subscriptions
和Messages
限制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