views:

67

answers:

1

I have a TakeAction model that looks like this:

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

and a TakeActionNote model that looks like this:

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

Using CanCan, I'm trying to allow the user that owns the take_action to create and destroy (manage) notes.

I've tried defining abilities with a block like this.

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

I can add notes to the take_action without any problem but when I try to destroy it I get:

NoMethodError in Take action notesController#33 undefined method `take_action' for nil:NilClass

Is there anything I'm missing or doing wrong? Any help is appreciated. Thanks!

A: 

The problem was actually in the TakeActionNotes controller. Nothing to do with CanCan.

Also, I changed the block condition to a hash condition in my Ability.rb to look like:

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