Ошибка при реализации act_as_commentable: неинициализированная константа Обсуждение:: Комментарий
Я получаю следующую ошибку в журнале сервера при попытке реализовать гем act_as_commentable для моей модели обсуждения:NameError - uninitialized constant Discussion::Comment:
Я сгенерировал файл миграции из файла readme и запустил rails 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 %>
изображение ошибки, указывающее на строку просмотра кода
Файл schema.rb содержит модель комментариев, добавленную посредством миграции в файле readme для 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 ответ
Похоже, проблема заключалась в том, что при запуске миграции не было создано файла comment.rb. Возможно, я выполнил миграцию до удаления старого файла модели.
rails generate acts_as_commentable_with_threading_migration
У меня была модель комментария, которую я ранее создал до того, как пытался использовать гем act_as_commentable. Я попытался удалить файлы миграции, маршрутов, контроллера, модели и представления, а затем с помощью rails db: drop, за которыми следуют rails db: create и rails db: migrate, чтобы начать с нуля.
После перезагрузки сервера гем комментариев теперь работает.
Спасибо за помощь @Vasilisa!