Estoy utilizando RABL para generar un conjunto de resultados Sunspot/SOLR y el objeto de resultados de búsqueda está compuesto por varios tipos de modelos. Actualmente dentro de la vista rabl tengo:Rabl Colección de modelos múltiples
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
Lo anterior funciona para un solo modelo; sin embargo, cuando hay varios tipos de modelo dentro de la colección @ search.results, falla porque ambas clases no tienen los mismos métodos de instancia. ¿Alguien sabe cómo tener diferentes atributos basados en el tipo? En última instancia, sería bueno extender condicionalmente una plantilla diferente dentro de la colección de resultados en función del tipo de objeto. Algo así como el pseudo código a continuación:
child @search.results => :results do |r|
if r.class == Product
extends "product/base"
else
extends "some other class base"
end
end
Gracias Nathan - ¡eso funcionó a la perfección! Realmente aprecio la ayuda, y lo parcial mantiene las cosas realmente limpias. – ejlevin1
Gracias, esto realmente me ayudó –