我使用CanCan在我的应用中定义功能。
问题是如何通过关联定义属于用户的模型的能力。
例如,这可行,因为广告系列有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