Найти все записи определенного типа в Полиморфной таблице, используя ActiveRecord в Rails 3 - PullRequest
1 голос
/ 26 февраля 2011

У меня есть таблица Category, которая является полиморфной моделью для множества других моделей.Например,

модель Адрес имеет модель доставки, выставления счетов, дома, категории работы

модель. Телефон имеет домашнюю, мобильную, рабочую, категорию факса * модель 1006 *

.Это оборудование, автомобильное, аэрокосмическое и т. д. категории.

То, что я хочу сделать, это что-то вроде

Product.all_categories, а также получение и массив всех категорий, относящихся кэта модель.

Конечно, я могу сделать что-то подобное для каждой рассматриваемой модели:

Category.select("name").where("categorizable_type = ?","address")

Также pace_car - готовый рельс 3, позволяет мне делать что-то вроде этого:

Category.for_category_type(Address)

Но мне было интересно, есть ли более простое / элегантное решение этой проблемы, используя сам Active Record - без использования драгоценного камня?

Спасибо

1 Ответ

9 голосов
/ 26 февраля 2011

Я не знаю ничего встроенного в ActiveRecord, чтобы дать вам это, но вы можете настроить этот метод for_category_type в одной строке кода в вашем контроллере категории:

scope :for_category_type, lambda { |class_name| where("categorizable_type = ?", class_name) }
...