2012-01-20 81 views
0

我在編寫一些代碼時遇到了一些麻煩(我可能很累),所以我需要一些幫助!如何通過多對多關係獲取所有類型的集合

我有一個模型婚禮有多個服務通過連接表。這是一個多對多的關係。 而這些服務中的每一個都有一個特定的service_type。

所以基本上我可以做這樣的事情:

myWeddingObject.services.first.service_type 

我的問題是,我希望能夠直接獲得所有可用婚禮的服務類型。例如:

myWeddingObject.service_types 

我的問題是,我是否有義務寫我的婚禮模型的方法,我會獲取所有服務,並檢查它們的類型,然後收集起來還是有我做的其他方式一開始看不到?

我想在婚禮模型寫類似的東西:

has_many :service_types, :through => :services 

但你可以假設,這是行不通的。 我可能還需要添加另一個模型/ SQL表?

我希望我已經清楚了,謝謝你的幫助,我很感謝!

回答

2

最簡單的辦法是隻做

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

...這將返回服務類型的數組。如果你想has_many:通過工作,那麼你需要使service_type成爲自己的模型。如果你有很多服務類型需要添加和編輯,那麼一個模型顯然是一條可行的路線。如果它只是一個小的固定設置,那麼單獨的模型可能是矯枉過正的。

+0

感謝您的快速回答! –

相關問題