在服务器为 运行 时更改 Rails 代码时,Trailblazer 操作中 class 的超级 class 不匹配错误
superclass mismatch error from class in Trailblazer operation when making changes to Rails code while server is running
我将 Trailblazer
gem 与 Rails 一起使用,并且在我的一个 Trailblazer
操作中有一个 Cell
class每当我用服务器 运行.
更改代码时,它就会开始抛出 superclass mismatch
错误
如果我启动服务器并立即开始浏览网站,一切运行正常。
但是,如果在启动服务器后随时更改一些代码,然后尝试加载站点上的页面,我会收到 superclass mismatch
错误。
原来我的操作名称与我为操作创建的文件的名称不同。我最近将文件名从 register.rb
更改为 make_reservation.rb
,但没有将操作 class 名称从 Register
更改为 MakeReservation
。当我也更改 class 名称时,superclass mismatch
错误停止发生。
如果您正在玩弄 Rails 5-pre 的 Trailblazer 书,您需要注意名称间距的变化。名称间距不正确导致了类似的错误。
虽然在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
我将 Trailblazer
gem 与 Rails 一起使用,并且在我的一个 Trailblazer
操作中有一个 Cell
class每当我用服务器 运行.
superclass mismatch
错误
如果我启动服务器并立即开始浏览网站,一切运行正常。
但是,如果在启动服务器后随时更改一些代码,然后尝试加载站点上的页面,我会收到 superclass mismatch
错误。
原来我的操作名称与我为操作创建的文件的名称不同。我最近将文件名从 register.rb
更改为 make_reservation.rb
,但没有将操作 class 名称从 Register
更改为 MakeReservation
。当我也更改 class 名称时,superclass mismatch
错误停止发生。
如果您正在玩弄 Rails 5-pre 的 Trailblazer 书,您需要注意名称间距的变化。名称间距不正确导致了类似的错误。
虽然在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