Я использую RABL для вывода набора результатов Sunspot / SOLR, а объект результатов поиска состоит из нескольких типов моделей. В настоящее время в представлении Rabl у меня есть:
object false
child @search.results => :results do
attribute :id, :resource, :upccode
attribute :display_description => :description
code :start_date do |r|
r.utc_start_date.to_i
end
code :end_date do |r|
r.utc_end_date.to_i
end
end
child @search => :stats do
attribute :total
end
Вышесказанное работает для одной модели; однако, когда в коллекции @ search.results находятся несколько типов моделей, происходит сбой, поскольку оба класса не имеют одинаковых методов экземпляра. Кто-нибудь знает, как иметь разные атрибуты в зависимости от типа? В конечном счете, было бы неплохо условно расширить другой шаблон в коллекции результатов в зависимости от типа объекта. Что-то вроде приведенного ниже псевдокода:
child @search.results => :results do |r|
if r.class == Product
extends "product/base"
else
extends "some other class base"
end
end