Rails应用程序规划关联?

时间:2015-09-21 14:32:45

标签: ruby-on-rails

我正在制作一个包含服务和提供商的服务比较网站。所有提供商将为他们提供的每种不同服务提供独特的成本。我希望能够让我的网站查看者看到每个提供商为特定服务收取的费用的比较。

我应该如何设置此关联?服务属于提供商或提供商属于服务吗?

在应用程序中,您将选择一项服务,然后查看每个提供商为该服务收取的费用。我还希望能够选择一个提供商,并在可能的情况下查看他们的服务列表。

3 个答案:

答案 0 :(得分:1)

  

服务属于提供商或提供商属于服务吗?

都不是。产品和服务是一种多对多的关系,因此您需要在产品和服务之间加入记录,这也是您需要为给定提供商实施该服务存储价格的地方。这是has_many :through的极其典型的用法。

您可能会考虑一个名为" ProvideService":

的加入记录
class Provider
  has_many :provided_services
  has_many :services, through: :provided_services

class ProvidedService
  belongs_to :provider
  belongs_to :service
  validates :price, presence: true

class Service
  has_many :provided_services
  has_many :services, through: :provided-services

举例来说,"贝尔"和#34;罗杰斯"将是提供商(这些是加拿大电话公司)和"长途"将是一项服务。

贝尔和长途之间的加入ProvidedService的价格可能是24.99。罗杰斯和长途之间的联合可能会有23.99的价格。

答案 1 :(得分:1)

这不是Errors and warnings关系,因此我们无法使用41-n。 这是'n-n'关系,因此您可以使用has_onebelongs_to

答案 2 :(得分:0)

您可能需要has-and-belongs-to-many关系。你提到的最后一个案例:

  

在应用程序中,您将选择一项服务,然后查看每个提供商为该服务收取的费用。我还希望能够选择一个提供商,并在可能的情况下查看他们的服务列表。

你可以通过拥有和属于多人的关系来轻松地做到这一点。