CanCan用has_many定义能力:通过关联

时间:2013-04-07 20:49:27

标签: ruby-on-rails cancan

我已经尝试了大约2个小时来完成这项工作而我根本做不到。找不到我问题的答案似乎都有效。

我有一个has_many:通过协会这样:

class Request < ActiveRecord::Base

  has_many :dialogs
  has_many :companies, :through => :dialogs

class Dialog < ActiveRecord::Base
  belongs_to :request
  belongs_to :company

在我的ability.rb文件中,我试图让公司只能看到它的请求(即查看current_user id是否在特定请求的对话框中)。

我尝试了很多方法,但没有得到任何结果。我必须以某种方式接近,但无法弄清楚:

can [:show, :destroy], Request, :dialogs => {:company_id => user.rolable.id}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您始终可以使用块定义能力:

can [:show, :destroy], Request do |request|    
  request.dialogs.where(company_id: user.rolable.id).any?
end

不确定我是否将你所寻找的条件钉在了一起,但是你得到了这张照片。