Polymorphic Association
To implement a polymorphic associations here, Ads and Zones should both use:
has_one :tracked, as: :trackable
You wouldn't need this line in Events: belongs_to :trackable, polymorphic: true
since you already have it in Tracked.
You then need to run some migrations to set up Tracked to handle the trackable
association (this explains that better than I could).
I think you would need to also remove self.abstract_class = true
in Tracked since it will now be represented in the db.
There is perhaps a better way to approach this:
Perhaps you would be better off creating the 'views', 'clicks' and 'conversion' associations directly on Ads and Zones and then including any shared logic with a module.
You could take the logic of Tracked, move it into a 'trackable' module and including that module in Ads and Zones (if you're using Rails 4 you can wrap this up in a 'trackable' concern).
You would also move the following associations into Ads and Zones:
has_many :views, class_name: "Event"
has_many :clicks, class_name: "Event"
has_many :conversions, class_name: "Event"
You then wouldn't need the Tracked class any more.
This approach would mean you could call Ad.first.views
as opposed to Ad.first.tracked.views
which would be the case if you used a polymorphic association.