Rails嵌套has_many与其他上下文

时间:2019-02-12 04:07:01

标签: ruby-on-rails activerecord has-many-through

我试图描述这样的想法:一组软件服务共享相似的依赖关系,但并非所有服务都在给定依赖关系的相同版本上。

请考虑以下模型:

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 :(得分:1)

我想我会添加类似的内容

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

是的,您将复制信息,但这似乎很有意义。可能性的体现。