我正在尝试传递这样的对象
<% if( can? :change, comment.karma, comment.user_id)%>
#blah blah blah
<% end %>
在我的ability.rb中,我有以下内容:
can :change, Karma do |karma, owner_id|
!karma.changers.map(&:user_id).include? user.id and owner_id != user.id
end
每次我刷新页面时,cancan 会触发一个查询(从ability.rb
)来获取业力,然后更改该业力,即使我已经获取了它(使用:include => { :karma => :changers }
控制器中的查询选项)。
添加:
我猜测它正在发生,因为 karma 正在存储指向 :include 对象(而不是对象本身)的链接,当我将它传递给方法时,它实际上被破坏了。所以我现在正在考虑序列化..
有任何想法吗?