Как показать несколько идентификаторов таблицы в рельсах

77
10

Я делаю приложение Band, где у Участка есть много событий и диапазонов через События.

Я понял, что в моей форме для создания события может быть только один band_id, но я хочу иметь много групп, потому что это имеет смысл только для этого.

Это моя схема

ActiveRecord::Schema.define(version: 20170817180728) do

create_table "bands", force: :cascade do |t|
t.string "name"
t.string "genre"
t.string "image"
t.boolean "explicit_lyrics"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "events", force: :cascade do |t|
t.string "name"
t.text "date"
t.boolean "alcohol_served"
t.string "image"
t.integer "venue_id"
t.integer "band_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "venues", force: :cascade do |t|
t.string "name"
t.string "city"
t.string "state"
t.boolean "family_friendly"
t.string "image"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

end

Это мои модели

class Venue < ApplicationRecord
has_many :events
has_many :bands, through: :events
end

class Event < ApplicationRecord
belongs_to :venue
belongs_to :band
end

class Band < ApplicationRecord
has_many :events
end

Я новичок в рельсах, это веб-приложение для практики. Я хочу, чтобы иметь возможность показывать несколько band_ids для моего события.

Я бы просто продолжал повторять t.band_id в моей форме?

спросил(а) 2021-01-25T20:48:25+03:00 4 месяца, 4 недели назад
1
Решение
88

Вы хотите указать отношение внешнего ключа в своей миграции, которое отражает ассоциации Active Record, которые вы настроили в своих моделях, используя belongs_to вместо типа данных. Таким образом, вы получите ссылки из одной таблицы в другую, или в вашем случае, из одной таблицы в другую, так как одна таблица с двумя отношениями "один ко многим" настроена.

class CreateEvents < ActiveRecord::Migration
def change
create_table :venues do |t|
t.string :name
t.string :city
t.string :state
t.boolean :family_friendly
t.string :image
t.timestamps
end

create_table :bands do |t|
t.string :name
t.string :genre
t.string :image
t.boolean :explicit_lyrics
t.timestamps
end

create_table :events do |t|
t.belongs_to :venue, index: true # Look here!
t.belongs_to :band, index: true # and here!
t.string :name
t.text :date
t.boolean :alcohol_served
t.string :image
t.timestamps
end
end
end

ответил(а) 2021-01-25T20:48:25+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема