Я ищу создание ассоциации, в которой модель может создаваться и принадлежать трем различным объектам, но также ссылаться на два других объекта.
Например, у меня есть модель перформанс , в которой три типа моделей могут создавать спектакль: место проведения , исполнитель , группа . Тем не менее, исполнение также должно ссылаться на два других, например, если место проведения создает представление, оно должно перечислить исполнителя или группу, которая будет выполнять. И если артист создает спектакль, то артист должен указать место, где он будет выступать.
Итак, я начинаю с чего-то вроде этого:
class CreatePerformances < ActiveRecord::Migration[6.0]
def change
create_table :performances, id: :uuid do |t|
t.belongs_to :venue, index: true
t.belongs_to :artist, index: true
t.belongs_to :band, index: true
t.timestamps
end
end
end
Однако, если владелец места создает спектакль и выполняет две отдельные полосы, мне нужно иметь массив полос в столбце band_id . Но когда я делаю это (t.belongs_to :band, type: :uuid, array: true, default: [], index: true
) и добавляю группу в массив band_id
, а затем делаю band.performances
, я получаю: ActiveRecord::StatementInvalid (PG::InvalidTextRepresentation: ERROR: malformed array literal:
Могу ли я сделать столбец ассоциации массивом, и при этом иметь возможность использовать функции ассоциации Rails, или это невозможно или даже плохо, и если да, то как?
Кроме того, я использую postgresql, и если у вас есть более элегантные способы выполнения вышесказанного, это также приветствуется.