0

Я относительно новым для Ruby On Rails, и мне нужна помощь, чтобы смоделировать следующий сценарий:Рубин на Rails ассоциаций - продукты обеспечивают и потреблять услуги

  • Модель содержит продукты и услуги
  • Услуга, должно быть обеспечено продуктом (он не может существовать без поставщика/владельца)
  • продукта может обеспечить ноль, один или несколько услуг
  • продукт может потреблять ноль, один или несколько услуг
  • поставщика (Pro канал) может, но не является автоматически потребителем предоставляемой Услуги

Что лучше использовать ассоциации, чтобы иметь возможности получить:

  • предоставленных услуги (от продукта)
  • потребляемых услуг (от Продукт)
  • потребителей услуг (от службы)
  • предоставляющей продукта (от службы)

Проблема похожа на эту Many-to-many Users and groups, but groups have owners (Пользователи и группы с владельцем). Но мой Продукт не обязательно является потребителем предоставляемой Службы.

Любая помощь была бы принята с благодарностью!

ответ

0

Нечто подобное могло бы работать для вас

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