Ошибка несоответствия суперкласса из класса в операции Trailblazer при внесении изменений в код Rails во время работы сервера

Я использую Trailblazer драгоценный камень с Rails, и есть Cell класс внутри одного из моих Trailblazer операции, которые начинают бросать superclass mismatch ошибка всякий раз, когда я меняю код при работающем сервере.

Если я запускаю сервер и сразу начинаю навигацию по сайту, все работает нормально.

Однако, если в какой-то момент после запуска сервера изменить какой-либо код, а затем попытаться загрузить страницу на сайте, я получу superclass mismatch ошибка.

2 ответа

Решение

Оказывается, имя моей операции не совпадает с именем файла, который я создал для операции. Я недавно изменил имя файла с register.rb в make_reservation.rb, но не изменил имя класса операции с Register в MakeReservation, Когда я изменил имя класса, superclass mismatch ошибка перестала происходить.

Если вы играете с книгой Trailblazer с Rails 5-pre, вам нужно следить за изменением расстояния между именами. Неправильный интервал имен привел к аналогичной ошибке.

Хотя в Rails 4 модели наследуются от ActiveRecord::Base в Rails 5 это форма ApplicationRecord,

Ваш app/concepts/thing/operation.rb в моем случае app/concepts/listing/operation.rb должно быть что-то вроде...

class Listing < ApplicationRecord
  class Create < Trailblazer::Operation
    def process(params)
      @model = Listing.create(params[:listing])
    end
  end
end
Другие вопросы по тегам