Rails вложенный has_many с дополнительным контекстом - PullRequest
0 голосов
/ 12 февраля 2019

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

Рассмотрим следующие модели:

class Service < ApplicationRecord
  has_many :service_dependencies
  has_many :dependencies, through: :service_dependencies
end

class ServiceDependency < ApplicationRecord
  belongs_to :service
  belongs_to :dependency
end

class Dependency < ApplicationRecord
  has_many :service_dependencies
  has_many :services, through: :service_dependencies
  has_many :versions, foreign_key: 'dependency_id', class_name: 'DependencyVersion'
end

class DependencyVersion < ApplicationRecord
  belongs_to :dependency
end

В то время как service может иметь много dependencies, а заданная зависимость может иметь много versions, любая служба использует одну версию зависимостиза один раз.

Как я могу выразить это отношение, чтобы я мог установить, какую версию зависимости использует служба в настоящее время?

Я подумал, что могу сохранить текущую версию в service_dependencies стол, но это похоже на неправильное решение.

Спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

Думаю, я бы добавил что-то вроде

class Configuration < AR
  belongs_to :service
  belongs_to :dependency
  belongs_to :dependency_version
end

Да, вы бы дублировали информацию, но, похоже, это будет иметь смысл.Реализация возможностей.

...