has_one polymorphic

Chciałbym zamoddelowac relacjęc 1 do 1, tego typu:

[code=ruby] class Event < ActiveRecord::Base
has_one :fee_structure
end

class FeeStructure < ActiveRecord::Base
belongs_to :event
end[/code]
Z tym że FeeStructure jest polimorficzne, czyli może to być FeeStructureTypeA, FeeStructureTypeB lub FeeStructureTypeC.

Potrzebowałbym zatem coś takiego:

[code=ruby] class Event < ActiveRecord::Base
has_one :fee_structure :polymorphic => true
end

class FeeStructureTypeA < ActiveRecord::Base
belongs_to :event, :as => fee_structure
end

class FeeStructureTypeB < ActiveRecord::Base
belongs_to :event, :as => fee_structure
end[/code]
Jednak has_one nie ma opcji polymorphic (ma ją tylko belongs_to)

Można zrobić odwrotną relację, ale byłoby to troszkę nienaturalne… bo Event jest rodzicem w tej relacji…

Jak zatem zamodelować coś takiego żeby działało ładnie?

Z góry dzięki za pomoc…

A może spróbujesz z STI?

[code=Ruby]class Event < ActiveRecord::Base
has_one :fee_structure
end

class FeeStructure < ActiveRecord::Base
belongs_to :event
end

class FeeStructure::TypeA < FeeStructure
end

class FeeStructure::TypeB < FeeStructure
end[/code]

Wygląda ciekawie…

A w formularzu wtedy bez problemu będzie działać takie coś:

<% form_for @event do |f| %> <% #pola dla eventu %> <%= f.fields_for :fee_structure, @event.fee_structure do |builder| %> <%= render :partial => # i tutaj czasami partial z polami FeeStructureA i czasami z FeeStructureB %> <% end %> <% end %>
??

przetestuję jutro z samego rana…