3

次のような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に問題なくメモを追加できますが、破棄しようとすると次のようになります。

アクションの実行におけるNoMethodErrornotesController#33 nil:NilClassの未定義のメソッド `take_action'

私が見逃している、または間違っていることはありますか?どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

4

問題は実際にはTakeActionNotesコントローラーにありました。CanCanとは何の関係もありません。

また、Ability.rbでブロック条件をハッシュ条件に変更して次のようにしました。

can :manage, TakeActionNote, :take_action => { :user_id => user.id }
于 2010-07-23T18:48:27.583 に答える