2

На примере полиморфных ассоциаций с rubyonrails.org и с использованием моделей ниже:Получение списка допустимых моделей для полиморфного ассоциации

class Picture < ActiveRecord::Base 
    belongs_to :imageable, polymorphic: true 
end 

class Employee < ActiveRecord::Base 
    has_many :pictures, as: :imageable 
end 

class Product < ActiveRecord::Base 
    has_many :pictures, as: :imageable 
end 

Как я могу идти о поиске действительных imageable_type сек?

E.g. чтобы он возвращался: [:employee, :product]

+2

Существует этот ответ от 6 лет назад http://stackoverflow.com/questions/2315239/finding-all-by-polymorphic- типа в рельсах/2315469 # 2315469. Что это происходит в каждой модели внутри вашего проекта и с использованием метода reflect_on_all_associations ищет ассоциации has_many или has_one. –

ответ

0

Easy. Просто откройте db/schema.rb и искать все таблицы с колонкой:

:imageable_id 
+0

Извините, я должен был добавить ** программно ** в мой вопрос ... – pyepye

0

Моим вопросом был бы зачем вам это нужно? Я не совсем уверен, но я думаю, что вы можете искать:

Picture.select(:imageable_type).distinct.pluck(:imageable_type) 
+0

Ваш вопрос - хороший вопрос ... Может быть, я настраиваю свои модели неправильно ... О вашем решении это не сработает для меня, потому что это вернет только ': imageable_type', которые были в использовании ... Я ищу типы _ALL_, будь то в использовании или _could_. Хорошо, так, как я уже сказал, возможно, мои модели настроены неправильно. В действительности, у меня есть базовый «Отчет», который является полиморфным, а затем конкретным _reports_ (например, «ReportA», «ReportB», «ReportC» и т. Д.). Я хочу, чтобы список «Report *» был определен, поэтому я могу создать раскрывающийся список, который выбирает соответствующий конкретный отчет. – pyepye

Смежные вопросы