Как получить все типы коллекций через отношения «многие ко многим» - PullRequest
0 голосов
/ 20 января 2012

У меня проблемы с написанием кода (возможно, я устал), поэтому мне нужна помощь здесь!

У меня есть модель Wedding, в которой есть несколько Сервисов через таблицу соединений. Это отношения «многие ко многим». И у каждого из этих Сервисов есть определенный service_type.

Так что в принципе я могу сделать что-то подобное:

myWeddingObject.services.first.service_type

Моя проблема в том, что я хотел бы иметь возможность получать все виды услуг, доступные для свадьбы. Например:

myWeddingObject.service_types

И мой вопрос: обязан ли я написать метод в моей модели Wedding, где я получу все сервисы и проверим их типы, а затем соберу его или есть другой способ, который я сначала не видел?

Я думал написать что-то подобное в модели Wedding:

has_many :service_types, :through => :services

Но, как вы можете предположить, это не работает. Возможно, мне также придется добавить другую модель / таблицу SQL?

Надеюсь, я был достаточно ясен, и спасибо за вашу помощь, я ценю!

1 Ответ

2 голосов
/ 20 января 2012

Самый простой способ - просто сделать

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

... Который будет возвращать массив типов услуг. Если вы хотите, чтобы has_many: through работало, вам нужно сделать service_type своей собственной моделью. Если у вас есть тонна типов сервисов, которые вы хотите добавить и отредактировать, то модель, безусловно, является подходящим вариантом. Если это просто небольшой фиксированный набор, то отдельная модель, вероятно, излишня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...