我正在尝试传递像这样的对象
<% if( can? :change, comment.karma, comment.user_id)%>
#blah blah blah
<% end %>
在我的能力中。我有以下内容:
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 }
选项进行查询控制器)。
加了:
我猜测它正在发生,因为业力正在存储一个链接:包含对象(不是对象本身),当我将它传递给方法时实际上会被破坏。所以我现在正在考虑序列化..
有什么想法吗?
答案 0 :(得分:0)
在模型中执行查询时,请尝试使用此语法
@comments = Comment.where(:foo_id => Bar.id).includes(:karma => :changers)
并查看问题是否仍然存在。
作为参考,http://m.onkey.org/active-record-query-interface概述了新的rails 3活动记录查询语法。