Пытаясь соединить две модели, не уверен, какой должна быть соответствующая активная ассоциация записи. - PullRequest
0 голосов
/ 11 января 2019

У меня есть две модели - волонтер и регистрация.

Добровольцы более устойчивы, но Регистранты будут приходить и уходить. Я пытаюсь назначить новую регистрацию добровольцу, используя внешний ключ в моей модели регистрации для добровольца_идентификатора.

Я посмотрел здесь и здесь и в итоге создал таблицу соединений, которая включает в себя идентификаторы как регистраций, так и добровольцев:

class CreateJoinTable < ActiveRecord::Migration[5.0]
  def change
    create_join_table :registrations, :volunteers do |t|
      t.index [:registration_id, :volunteer_id], name: :reg_vol_index
      t.index [:volunteer_id, :registration_id], name: :vol_reg_index
    end
  end
end

В моих двух моделях я не совсем уверен, что перечислить ассоциации как - я читал о has_many, assign_to и has_many_and_belongs_to-, а также t.reference.

Я только хочу иметь возможность назначить идентификатор добровольца для регистрации.

Может ли кто-нибудь помочь прояснить, какой тип ассоциации является лучшим?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 января 2019

С уже созданной таблицей соединений вы можете использовать has_and_belongs_to_many связь для обеих моделей.

volunteer.rb:

class Volunteer < ApplicationRecord
  has_and_belongs_to_many :registrations
end

registration.rb:

class Registration < ApplicationRecord
  has_and_belongs_to_many :volunteers
end

Это позволит вам получить доступ к регистрациям через добровольца (volunteer.registrations) и добровольцев через регистрацию (registration.volunteers)

Смотрите здесь: https://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

...