如何使用模型关联定义CanCan功能

时间:2012-06-01 21:47:24

标签: ruby-on-rails ruby-on-rails-3

我使用CanCan在我的应用中定义功能。

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

例如,这可行,因为广告系列有affiliate_id字段

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

但是,AffiliatesSubscriptionsMessagesKeywordsKeywords属于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

0 个答案:

没有答案