我已经尝试了大约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}
有人可以帮忙吗?
答案 0 :(得分:1)
您始终可以使用块定义能力:
can [:show, :destroy], Request do |request|
request.dialogs.where(company_id: user.rolable.id).any?
end
不确定我是否将你所寻找的条件钉在了一起,但是你得到了这张照片。