Это действительно зависит от того, чего вы пытаетесь достичь, но вы можете попробовать добавить это представление в свою базу данных (не путать с представлениями в MVC).
create or replace view hero_images as
select
hero_image,
id source_id,
'Project' source_type
from projects
union all
select
hero_image,
id source_id,
'Competition' source_type
from competitions
(обратите внимание, что синтаксис для вашей базы данных может быть другим, это синтаксис Oracle).
Если вы затем запросите их в базе данных, вы увидите изображение героя иоткуда она взялась.
Если вы затем напишите модель с именем HeroImage, она должна вернуть нужные вам данные.
Возможно, вам также понадобится ссылка на источник
class HeroImage < ActiveRecord::Base
primary_key :source_id
belongs_to :source, polymorphic: true
end
Я не уверен, что это то, что вам нужно, но он должен собрать все эти данные вместе.
Что это делает:
A база данныхview - это стандартный оператор SQL, который может запрашиваться как таблица (но только для чтения).
Оператор union возвращает результаты двух или более операторов SQL сте же имена столбцов, что и в одной таблице результатов.
A полиморфная ссылка использует * _type для определения, к какой модели принадлежит связанный объект, и * _id для поиска конкретного экземпляра.