Ruby on rails CanCan自定义操作不使用块

Ruby on rails CanCan自定义操作不使用块,ruby-on-rails,cancan,Ruby On Rails,Cancan,我正在修改能力类中的一些自定义CanCan操作,以使用块,而不仅仅是散列,但现在它们实际上已经停止限制访问。奇怪的是:manage和:create等内置操作似乎仍然可以很好地处理这些块 这是一个例子: 旧的 新的 以前有人遇到过这个问题吗?我不能对您不希望出现的行为说太多,但您可能不应该将哈希改为block,因为这些哈希使您能够获取记录。 请仔细阅读CanCan wiki。相信我,我不想使用这些块,但在我的情况下,这似乎是唯一的方法。我已经从项目和用户之间的一对多关系转变为多对多关系,所以现在我

我正在修改能力类中的一些自定义CanCan操作,以使用块,而不仅仅是散列,但现在它们实际上已经停止限制访问。奇怪的是:manage和:create等内置操作似乎仍然可以很好地处理这些块

这是一个例子:

旧的

新的


以前有人遇到过这个问题吗?

我不能对您不希望出现的行为说太多,但您可能不应该将哈希改为block,因为这些哈希使您能够获取记录。
请仔细阅读CanCan wiki。

相信我,我不想使用这些块,但在我的情况下,这似乎是唯一的方法。我已经从项目和用户之间的一对多关系转变为多对多关系,所以现在我需要检查项目中的所有用户,而不仅仅是一个。嗯,试着使用调试器,看看在检查能力时CanCan会发生什么。或者打开并编辑文件系统中CancanGem的文件,查看转储变量传递的内容。这就是当我想不出任何其他事情时,我是如何走在这条路上的。当然,将文件还原回去;)
# this one works
can :share, Project, :user_id => user.id
# this one doesn't work
can :share, Project do |project|
  project.users.exists?(user)
end