Итак, у меня есть две модели, location
и menu
. У каждого location
может быть много меню, но у каждого menu
есть только одно location
.
Я использую тип string
для моих location
идентификаторов. Однако я не могу получить rake db:migrate
для генерации правильной схемы с типом string
для внешнего ключа в таблице menu
.
Модель:
class Location < ActiveRecord::Base
self.primary_key = :id
has_many :menus
end
class Menu < ActiveRecord::Base
belongs_to :location
end
Миграция:
class CreateLocations < ActiveRecord::Migration[5.1]
def change
create_table :locations, id: false do |t|
t.string :id, primary_key: true
t.timestamps
end
end
end
class CreateMenus < ActiveRecord::Migration[5.1]
def change
create_table :menus do |t|
t.belongs_to :location
# other stuff
end
end
end
результат в этой схеме
ActiveRecord::Schema.define(version: 20180413142949) do
create_table "locations", primary_key: "id", id: :string, force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "menus", force: :cascade do |t|
t.bigint "location_id"
t.text "name", null: false
# other stuff
t.index ["location_id"], name: "index_menus_on_location_id"
end
end
Так что я тут не так делаю?