错误禁止保存此类别:课程必须存在

时间:2018-04-12 07:52:38

标签: ruby-on-rails ruby

错误禁止保存此类别:

  

课程必须存在

当我尝试创建一个类别时,有一个错误说明课程必须存在,但我在课程表中创建了一个条目。我做错了什么?

继承我的category.rb代码:

 class Category < ApplicationRecord
   belongs_to :course
 end

course.rb:

class Course < ApplicationRecord
  has_many :category
  has_many :location
end

Schema.rb

create_table "categories", force: :cascade do |t|
 t.string "name"
 t.text "details"
 t.integer "status", default: 0, null: false
 t.datetime "created_at", null: false
 t.datetime "updated_at", null: false
end

create_table "courses", force: :cascade do |t|
  t.string "title"
  t.string "alias"
  t.integer "category_id"
  t.date "start_date"
  t.date "end_date"
  t.integer "location_id"
  t.integer "max_participants"
  t.integer "min_participants"
  t.decimal "course_fee", default: "0.0"
  t.decimal "tax", default: "0.0"
  t.decimal "deposit", default: "0.0"
  t.text "description"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.integer "if_fully_booked", default: 0
  t.text "short_description"
  t.integer "status", default: 0, null: false
  t.string "if_booked"
  t.string "currency"
end

1 个答案:

答案 0 :(得分:2)

您需要course_idcategories表,您可以像创建迁移一样执行此操作

rails g migration AddCourseIdToCategories course_id:integer

它将生成一个像这样的

的迁移文件
class AddCourseIdToCategories < ActiveRecord::Migration[5.1]
  def change
    add_column :categories, :course_id, :integer
  end
end

然后rake db:migrate

或者您可以直接referencecourses喜欢

rails g migration AddCourseToCategories course:references

它会像这样生成一个db/migrate/TIMESTAMP_add_course_to_categories.rb文件

class AddCourseToCategories < ActiveRecord::Migration[5.1]
  def change
    add_reference :categories, :course, index: true
  end
end

然后rake db:migrate

注意: 您可以使用rakerails来迁移文件。由于Rails 5.0+在rails可执行文件中内置了rake命令,因此rails是运行命令的新默认值。

请参阅The belongs_to Association