Пользовательская ассоциация не установлена - PullRequest
0 голосов
/ 07 ноября 2019

В приложении Rails 6 у меня есть модель Course с атрибутом массива attendee_ids, как показано на схеме ниже.

  create_table "courses", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
    t.uuid "attendee_ids", null: false, array: true
    t.index ["attendee_ids"], name: "index_lcourses_on_attendee_ids", using: :gin
  end

В модели у меня есть ассоциации, определенные как

class Course < ApplicationRecord
    has_many :attendees, class_name:   'User',
                           primary_key:  'attendee_ids',
                           foreign_key:  'id'
end

Ассоциация прекрасно работает при чтении для БД. Однако, независимо от того, что я пытаюсь сделать, я не могу сохранить attendee_ids при создании нового Course.

    attendee = User.first
    => #<User id: "6936291d-f7d8-409f-a18b-83cab8c3de0b" ...>
    course = Course.new
    => #<Course id: nil, attendee_ids: nil>
    course.attendees = [attendee]
    => #<ActiveRecord::Associations::CollectionProxy [#<User id: "6936291d-f7d8-409f-a18b-83cab8c3de0b">]>
    course
    => #<Course id: nil, attendee_ids: nil>
    course.attendee_ids = [attendee.id]
    => #<ActiveRecord::Associations::CollectionProxy [#<User id: "6936291d-f7d8-409f-a18b-83cab8c3de0b">]>
    course
    => #<Course id: nil, attendee_ids: nil>

Назначение работает, если я удаляю ассоциацию has_many.

        attendee = User.first
        => #<User id: "6936291d-f7d8-409f-a18b-83cab8c3de0b" ...>
        course = Course.new
        => #<Course id: nil, attendee_ids: nil>
        course.attendee_ids = [attendee.id]
        => #<ActiveRecord::Associations::CollectionProxy [#<User id: "6936291d-f7d8-409f-a18b-83cab8c3de0b">]>
        course
        => #<Course id: nil, attendee_ids: ["6936291d-f7d8-409f-a18b-83cab8c3de0b">

Я что-то здесь упускаю?

PS - Кому интересно, я не использую встроенную has_many ассоциацию для целей аудита, которые выходят за рамки этоговыпуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...