代码之家  ›  专栏  ›  技术社区  ›  Carlos A. Cabrera

使用CanCan验证模型关联用户的能力

  •  3
  • Carlos A. Cabrera  · 技术社区  · 15 年前

    我有一个TakeAction模型,它看起来像这样:

    class TakeAction < ActiveRecord::Base
      belongs_to :user
      has_many :take_action_notes
      attr_protected :user_id  
    end
    

    class TakeActionNote < ActiveRecord::Base
      belongs_to :take_action
      validates_presence_of :note
    end
    

    使用CanCan,我试图允许拥有take\u操作的用户创建和销毁(管理)笔记。

    我试过用这样的方块来定义能力。

     can :manage, TakeActionNote do |action, note|
        note.take_action.user.id == user.id
     end
    

    我可以毫无问题地为take\u操作添加注释,但当我尝试销毁它时,我得到:

    未定义的方法“take\u action”nil:NilClass

    我有什么遗漏或做错的吗?感谢您的帮助。谢谢!

    1 回复  |  直到 15 年前
        1
  •  4
  •   Carlos A. Cabrera    15 年前

    另外,我将Ability.rb中的块条件更改为哈希条件,如下所示:

    can :manage, TakeActionNote, :take_action => { :user_id => user.id }