代码之家  ›  专栏  ›  技术社区  ›  Sourabh Banka

名称错误(未初始化的常量Engagestudent::EngageCourse)

  •  0
  • Sourabh Banka  · 技术社区  · 7 年前

    我有两种型号:

    app/models/engage\u course.rb
    
    类EngageCourse<应用程序记录
    
    有很多:订婚者
    结束
    
    
    #应用程序/模型/Engage_student.rb
    
    类Engagestudent<ApplicationRecord
    
    属于:EngageCourse
    结束
    

    myschema.rbis:。

    activerecord::schema.define(version:2018_06_29_093333)do
    
    #这些扩展必须启用才能支持此数据库
    启用扩展名“plpgsql”
    
    创建_表“Engage_Courses”,force::cascade do_t|
    t.string“主题”
    T.string“说明”
    t.datetime“开始日期”
    t.integer“座位”
    t.datetime“创建时间”,空:假
    t.datetime“更新时间”,空:假
    结束
    
    创建“吸引学生”表格,force::cascade do_t|
    t.string“名称”
    t.string“电子邮件”
    T.string“电话”
    T.string“学院”
    T.string“学期”
    T.string“状态”
    t.bigint“课程ID”
    t.datetime“创建时间”,空:假
    t.datetime“更新时间”,空:假
    t.index[“EngageCourse_id”],name:“Index_EngageCourse_id”上的“EngageCourse”学生
    结束
    
    结束
    

    因此,在为enagestudentfromrails consolegetting errornameerror(uninitialized constant engagestudent::engagecourse)创建记录时

    我认为这个模型不能正确地映射其他模型。 我想为engagecouse创建engagestudent

    请参见屏幕截图。.

    我的schema.rb是:

        ActiveRecord::Schema.define(version: 2018_06_29_093333) do
    
      # These are extensions that must be enabled in order to support this database
      enable_extension "plpgsql"
    
      create_table "engage_courses", force: :cascade do |t|
        t.string "topic"
        t.string "description"
        t.datetime "start_date"
        t.integer "seats"
        t.datetime "created_at", null: false
        t.datetime "updated_at", null: false
      end
    
      create_table "engage_students", force: :cascade do |t|
        t.string "name"
        t.string "email"
        t.string "phone"
        t.string "college"
        t.string "semester"
        t.string "status"
        t.bigint "engagecourse_id"
        t.datetime "created_at", null: false
        t.datetime "updated_at", null: false
        t.index ["engagecourse_id"], name: "index_engage_students_on_engagecourse_id"
      end
    
    end
    

    因此,在为创建记录时enagestudent轨道控制台获取错误NameError (uninitialized constant EngageStudent::Engagecourse)

    我认为这个模型不能正确地映射其他模型。 我想创建engaestudent对于engagecouse.

    请参见屏幕截图。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jagdeep Singh    7 年前

    按照惯例,Rails将尝试寻找类 Engagecourse EngageCourse belongs_to class_name

    class EngageStudent < ApplicationRecord
      belongs_to :engagecourse, class_name: 'EngageCourse'
    end
    

    更新

    版本:

    class EngageCourse < ApplicationRecord
      has_many :engage_students
    end
    
    class EngageStudent < ApplicationRecord
      belongs_to :engage_course
    end
    

    您必须将表“Engage_Students”中的“EngageCourse_ID”列重命名为“Engage_Course_ID”。