【问题标题】:Validating with model associations the user's ability using CanCan通过模型关联验证用户使用 CanCan 的能力
【发布时间】:2010-07-22 21:23:05
【问题描述】:

我有一个如下所示的 TakeAction 模型:

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

还有一个像这样的 TakeActionNote 模型:

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

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

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

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

我可以毫无问题地向 take_action 添加注释,但是当我尝试销毁它时,我得到:

Take action notesController#33 中的 NoMethodError nil:NilClass 的未定义方法“take_action”

我有什么遗漏或做错了吗?任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: ruby-on-rails cancan


    【解决方案1】:

    问题实际上出在 TakeActionNotes 控制器中。与CanCan无关。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多