【发布时间】:2011-01-26 21:14:03
【问题描述】:
我正在尝试传递这样的对象
<% if( can? :change, comment.karma, comment.user_id)%>
#blah blah blah
<% end %>
在我的能力.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 对象(而不是对象本身)的链接,当我将它传递给方法时,它实际上被破坏了。所以我现在正在考虑序列化..
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails-3 activerecord cancan