rails: как связать два ActiveRecords через таблицу соединений - PullRequest
0 голосов
/ 26 мая 2020

У меня есть две модели (Service, Profile), которые имеют has_many через связь друг с другом через таблицу соединений.

class Service < ApplicationRecord
  has_many :service_profiles, dependent: :destroy
  has_many :profiles, :through => :service_profiles
end

class Profile < ApplicationRecord
  has_many :service_profiles, dependent: :destroy
  has_many :services, :through => :service_profiles
end

class ServiceProfile < ApplicationRecord
  belongs_to :service
  belongs_to :profile
end

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

2.6.3 :016 > profile = Profile.first 
  Profile Load (12.3ms)  SELECT "profiles".* FROM "profiles" ORDER BY "profiles"."id" ASC LIMIT $1  [["LIMIT", 1]]
 => #<Profile id: 1, name: "awesome Policy", description: "awesome Policy for awesome devices", created_at: "2020-05-26 08:56:08", updated_at: "2020-05-26 08:56:08">
2.6.3 :017 > profile.services.first.link 

1 Ответ

0 голосов
/ 26 мая 2020

Ваши ассоциации в моделях верны.

Чтобы объединить их в базе данных с помощью консоли, вы можете сделать что-то вроде этого:

ServiceProfile.create(service: Service.first, profile: Profile.first)

или

profile = Profile.first 
profile.service_profiles.create(service: Service.first)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...