Ruby on rails RubyonRails关联-产品提供和使用服务

Ruby on rails RubyonRails关联-产品提供和使用服务,ruby-on-rails,many-to-many,rails-activerecord,model-associations,Ruby On Rails,Many To Many,Rails Activerecord,Model Associations,我对ruby on rails比较陌生,需要一些帮助来模拟以下场景: 该模型包含产品和服务 服务必须由产品提供(如果没有提供商/所有者,它就无法存在) 一个产品可以提供零、一或多个服务 一个产品可以使用零个、一个或多个服务 提供商(产品)可以但不自动成为所提供服务的消费者 协会的最佳用途是什么: 提供的服务(来自产品) 消费服务(来自产品) 服务的消费者(来自服务) 提供产品(来自服务) 问题与此类似(拥有所有者的用户和组)。但我的产品不一定是所提供服务的消费者 任何帮助都将不胜感激 像

我对ruby on rails比较陌生,需要一些帮助来模拟以下场景:

  • 该模型包含产品和服务
  • 服务必须由产品提供(如果没有提供商/所有者,它就无法存在)
  • 一个产品可以提供零、一或多个服务
  • 一个产品可以使用零个、一个或多个服务
  • 提供商(产品)可以但不自动成为所提供服务的消费者
协会的最佳用途是什么:

  • 提供的服务(来自产品)
  • 消费服务(来自产品)
  • 服务的消费者(来自服务)
  • 提供产品(来自服务)
问题与此类似(拥有所有者的用户和组)。但我的产品不一定是所提供服务的消费者


任何帮助都将不胜感激

像这样的东西可能适合你

Service belongs_to :provider, class_name: "Product" # services has provider_id
Product has_many :provided_services, class_name: "Service", foreign_key: :provider_id

Product has_many :products_consumed_services
Product has_many :consumed_services, through: :products_consumed_services
ProductsConsumedService belongs_to :product
ProductsConsumedService belongs_to :consumed_service, class_name: "Service"

Service has_many :products_consumed_services, foreign_key: :consumed_service_id
Service has_many :consumers, through: :products_consumed_services, source: :product
提供的服务(来自产品)

消费服务(来自产品)

服务消费者(来自服务)

提供产品(来自服务)

product.provided_services
product.consumed_services
service.consumers
service.provider