ruby-on-railsrails-enginesmethod-missingancestry

'method_missing': undefined local variable or method 'has_ancestry'


I am following this tutorial (http://www.tweetegy.com/2013/04/create-nested-comments-in-rails-using-ancestry-gem/) on how to setup the Ancestry gem for nested comments. When I run through the tutorial on a normal rails app it works fine. My issue comes when I try to separate the commenting system out into an engine. Here are the models that I have:

In the engine

module CommentThread
  class Comment < ActiveRecord::Base
    has_ancestry
    belongs_to :commentable, :polymorphic => true
  end
end

In the main app

class Article < ActiveRecord::Base
  has_many :comments, :as => :commentable, class_name: 'CommentThread::Comment'
end

If I remove has_ancestry I can access the comments just fine. I have followed the tutorial just as I did in the first app but for some reason when I run Article.first.comments on this one I get the method missing error. Please let me know if I need to include more information for assistance. Thank you.


Solution

  • If you are using an engine you should put ancestry in your Gemfile and require it in lib/<your_engine>/engine.rb file.

    lib/your_engine/engine.rb

    require 'ancestry'