错误禁止保存此类别:
课程必须存在
当我尝试创建一个类别时,有一个错误说明课程必须存在,但我在课程表中创建了一个条目。我做错了什么?
继承我的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
答案 0 :(得分:2)
您需要course_id
到categories
表,您可以像创建迁移一样执行此操作
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
或者您可以直接reference
到courses
喜欢
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
注意: 您可以使用rake
或rails
来迁移文件。由于Rails 5.0+
在rails可执行文件中内置了rake命令,因此rails
是运行命令的新默认值。