So, say you’re in a fantasy world, and the rif-raf is beating down your doors…
Or, maybe, you’re trying to write a sane json rendering of your model, and the model has a polymorphic belongs_to.
As a bit of review, let’s start with the easy case. You have some models with a simple association.
class Child < ActiveRecord::Base belongs_to :parent end class Parent < ActiveRecord::Base has_many :children end
The rabl for a child is pretty easy. In app/views/children/show.rabl
you might have:
object @child attributes :id, :name child(:parent) { partial "children/parent" }
As it turns out, you’re actually writing an app that’s used to track orphans left behind after UFO visits, so you need to support children of aliens, too. So your models look more like this:
class Child < ActiveRecord::Base belongs_to :parent, :polymorphic => true end class HumanParent < ActiveRecord::Base has_many :children, :as => :parent end class AlienParent < ActiveRecord::Base has_many :children, :as => :parent end
And of course you need to output different information for alien parents (app/views/children/alien_parent.rabl
) than for human parents (app/views/children/human_parent.rabl
). So your rabl in app/views/children/show.rabl
will look more like this:
object @child attributes :id, :name code(:parent) { |child| partial "children/#{child.parent.class.name.underscore}", :object => child.parent }