【问题标题】:Rails 5.2 Undefined method belongs_to in inherited classRails 5.2继承类中未定义的方法belongs_to
【发布时间】:2019-07-13 03:14:50
【问题描述】:

我最近升级到 rails 5.2,现在我的一个模型出现错误,因为 belongs_to 方法没有被其中一个子类继承。我错过了什么明显的东西吗?

class B < A
  belongs_to :x
  belongs_to :y
end

class A < ApplicationRecord
  belongs_to :z
end

Error:
D#test_should_get_new:
ActionView::Template::Error: undefined method `belongs_to' for B:Class
    app/models/B.rb:2:in `<class:QcQpcrSampleTest>'
    app/models/B.rb:1:in `<top (required)>'
    app/views/D/_form.erb:45:in `block (2 levels) in _app_views_D__form_erb___2546218964114172504_70133388141640'
    app/views/D/_form.erb:22:in `block in ...
    app/controllers/application_controller.rb:78:in `set_time_zone'
    test/controllers/D_test.rb:12:in `block in <class:DTest>'

【问题讨论】:

标签: ruby-on-rails minitest


【解决方案1】:

您正在从 ApplicationRecord 继承 A 类,但您的应用不知道它是什么。在 app/models 中创建 application_record.rb 并将代码放入其中:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

现在好了,你所有的模型都继承自 ActiveRecord::Base 并拥有所有的关联方法

【讨论】:

  • 我的项目中有这个文件,但仍然出现错误
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多