Problems with a tracked object on creation

74 views
Skip to first unread message

Marc Gayle

unread,
Feb 24, 2015, 7:47:28 PM2/24/15
to public-...@googlegroups.com
I have a class `FamilyTree` that I am tracking with PublicActivity.

The associations are as follows:

User 
  has_one :family_tree, dependent: :destroy
  has_many :memberships, dependent: :destroy
  has_many :nodes, dependent: :destroy

Node
  include PublicActivity::Model
  tracked except: :update, owner: ->(controller, model) { controller && controller.current_user }
  tracked except: :update, recipient: ->(controller, model) { model && model.user }
  belongs_to :family_tree
  belongs_to :user

FamilyTree 
  include PublicActivity::Model
  tracked owner: ->(controller, model) { controller && controller.current_user }
  tracked recipient: ->(controller, model) { model && model.node.user }
    
  belongs_to :user
  has_many :memberships, dependent: :destroy
  has_many :members, through: :memberships, source: :user, dependent: :destroy
  has_many :nodes, dependent: :destroy

My FamilyTree Schema looks like this:

# == Schema Information
#
# Table name: family_trees
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  user_id    :integer
#  created_at :datetime
#  updated_at :datetime

And my Node schema looks like this:

# == Schema Information
#
# Table name: nodes
#
#  id             :integer          not null, primary key
#  name           :string(255)
#  family_tree_id :integer
#  user_id        :integer
#  media_id       :integer
#  media_type     :string(255)
#  created_at     :datetime
#  updated_at     :datetime
#  circa          :datetime
#  is_comment     :boolean

User is normal stuff (email, etc.)

The issue I am having is on my `User` class, I have an `after_create :create_family_tree` that looks like this:

    def create_family_tree
      family_tree = self.build_family_tree(name: "#{name}'s Family Tree")
      family_tree.save!
    end

But when I create a new User account (i.e. I register as a new user), this is the error I get:

NoMethodError at /users

undefined method `node' for #<FamilyTree:0x007fcd3d3a9668> 

That error occurs at this line in my `FamilyTree.rb` model:

 tracked recipient: ->(controller, model) { model && model.node.user }

I am not quite sure how to proceed.

Any thoughts?

 
Reply all
Reply to author
Forward
0 new messages