Я пытаюсь понять, как использовать внешние ключи в Rails,
$ rails g scaffold categories cat:string value:integer
$ rails db:migrate
Затем создайте новую таблицу с внешним ключом, соединяющимся с первыми категориями таблиц,
$ rails g scaffold subcategories subcats:string subcatsvalue:integer categories:references
$ rails db:migrate
Затем я добавляю / category к URL, и форма там, как и ожидалось, и я могу делать все операции CRUD.
Затем я добавляю / подкатегории к URL и пытаюсь добавить некоторые данные в форму, такие как as,
Subcats: blah Subcatsvalue: 123 Categories: cat1
это должен быть идентификатор категории или название категории?
/ RubyLearningApp / db / migrate /20200413195730_create_categories.rb
class CreateCategories < ActiveRecord::Migration[5.0]
def change
create_table :categories do |t|
t.string :cat
t.integer :value
t.timestamps
end
end
end
/ RubyLearningApp / db / migrate / 20200413200303_create_subcategories.rb
class CreateSubcategories < ActiveRecord::Migration[5.0]
def change
create_table :subcategories do |t|
t.string :subcats
t.integer :subcatsvalue
t.references :categories, foreign_key: true
t.timestamps
end
end
end
Это правильный способ установки внешнего ключа между таблицами?
* Когда я заполняю категории с помощью 'cat1', я получаю следующую ошибку:
Schema.rb
ActiveRecord::Schema.define(version: 20200413200303) do
create_table "categories", force: :cascade do |t|
t.string "cat"
t.integer "value"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "subcategories", force: :cascade do |t|
t.string "subcats"
t.integer "subcatsvalue"
t.integer "categories_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["categories_id"], name: "index_subcategories_on_categories_id"
end
end
Файлы модели:
category.rb
class Category < ApplicationRecord
end
subcatego ry.rb
class Subcategory < ApplicationRecord
belongs_to :categories
end
Любая помощь будет принята с благодарностью,
Спасибо,