Ошибка несоответствия суперкласса из класса в операции 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