Ruby on rails 如何通过多对多关系获取集合的所有类型

Ruby on rails 如何通过多对多关系获取集合的所有类型,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在编写一些代码时遇到了一些问题(我可能很累),所以我需要一些帮助 我有一个模型婚礼,它通过一个连接表提供多种服务。这是一种多对多的关系。 每种服务都有特定的服务类型 所以基本上我可以这样做: myWeddingObject.services.first.service_type 我的问题是,我希望能够直接获得婚礼的所有服务类型。例如: myWeddingObject.service_types 我的问题是,我是否有义务在我的婚礼模型中写一个方法,我将获取所有服务,检查它们的类型,然后收集它

我在编写一些代码时遇到了一些问题(我可能很累),所以我需要一些帮助

我有一个模型婚礼,它通过一个连接表提供多种服务。这是一种多对多的关系。 每种服务都有特定的服务类型

所以基本上我可以这样做:

myWeddingObject.services.first.service_type
我的问题是,我希望能够直接获得婚礼的所有服务类型。例如:

myWeddingObject.service_types
我的问题是,我是否有义务在我的婚礼模型中写一个方法,我将获取所有服务,检查它们的类型,然后收集它们,还是有一种我起初没有看到的其他方法

我想在婚礼模型中写些类似的东西:

has_many :service_types, :through => :services
但正如你所想,这是行不通的。 我可能还需要添加另一个model/SQL表


我希望我已经够清楚了,谢谢你的帮助,我很感激

最简单的方法就是

wedding.services.map(&:service_type).uniq 

…将返回服务类型的数组。如果你想有很多:通过工作,那么你需要使服务类型成为它自己的模型。如果您有大量的服务类型需要添加和编辑,那么模型显然是一个不错的选择。如果只是一个小的固定套件,那么单独的型号可能会有点过头。

谢谢您的快速回答!