实现acts_as_commentable时发生错误:未初始化的常量Discussion :: Comment

时间:2019-02-26 04:36:03

标签: ruby-on-rails rubygems acts-as-commentable

当尝试为我的讨论模型实现acts_as_commentable gem时,出现以下服务器日志错误: NameError - uninitialized constant Discussion::Comment:

我已经从自述文件中生成了迁移文件,并运行了db:migrate。

 rails generate acts_as_commentable_with_threading_migration

我尝试重新启动应用程序。

我已按照自述文件中的使用说明将其添加到模型文件中:

class Discussion < ApplicationRecord
  acts_as_commentable
end

查看代码摘要以尝试显示“讨论”模型的注释列表:

<% Discussion.where(guide_id: @guide.id).order(:created_at).each do|discussion| %>
 <% discussion.comment_threads.each do |comment| %>
   <p><%= comment.body %></p>
 <% end %>
<% end %>

image of error pointing to the view line of code

schema.rb文件包括在gem自述文件中通过迁移添加的注释模型:

 create_table "comments", force: :cascade do |t|
    t.integer "commentable_id"
    t.string "commentable_type"
    t.string "title"
    t.text "body"
    t.string "subject"
    t.integer "user_id", null: false
    t.integer "parent_id"
    t.integer "lft"
    t.integer "rgt"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["commentable_id", "commentable_type"], name: "index_comments_on_commentable_id_and_commentable_type"
    t.index ["user_id"], name: "index_comments_on_user_id"
  end

1 个答案:

答案 0 :(得分:1)

问题似乎是当我运行迁移时没有创建comment.rb文件。在删除旧模型文件之前,我可能已经进行了迁移。

rails generate acts_as_commentable_with_threading_migration

在尝试使用acts_as_commentable gem之前,我有一个以前创建的注释模型。我尝试删除迁移,路由,控制器,模型和视图文件,然后使用rails db:drop,然后使用rails db:create和rails db:migrate从头开始。

重新启动服务器后,注释gem现在可以工作。

感谢@Vasilisa的所有帮助!