Cómo puedo construir elegantemente un formulario para un modelo que tiene una asociación polimórfica?

Aquí están mis modelos:

class Lesson < ActiveRecord::Base
  belongs_to :topic, :polymorphic => true  
  validates_presence_of :topic_type, :topic_id  
end

class Subject < ActiveRecord::Base  
   has_many :lessons, :as => :topic  
end

class Category < ActiveRecord::Base  
  has_many :lessons, :as => :topic  
end

Ahora, lo que necesito es un formulario que permita al usuario crear o actualizar lecciones. La pregunta es, ¿cómo puedo proporcionar un menú selecto que ofrece una combinación de temas y categorías? (Para el usuario, en este formulario en particular, los Sujetos y las Categorías son intercambiables, pero ese no es el caso en otra parte).

Idealmente, esto se vería así:

views / lessons / _form.html.haml

= simple_form_for(@lesson) do |f|
  = f.input :title
  = f.association :topic, :collection => (@subjects + @categories)

Eso no funcionará porque solo estaríamos especificando el topic_id, y también necesitamos los topic_types. Pero, ¿cómo podemos especificar esos valores?

Supongo que el quid del problema es que realmente quiero un único menú de selección que especifique dos valores correspondientes a dos atributos diferentes (topic_id y topic_type). ¿Hay alguna manera elegante y railsy de hacer esto?

Algunas notas:

a) La herencia de una sola tabla haría que este problema desapareciera, pero me gustaría evitarlo, ya que las Categorías y los Temas tienen su propia relación ... Le ahorraré los detalles.

b) Podría extraer algunas travesuras de JavaScript, ¿sí? Pero eso suena desordenado, y si hay una forma más limpia de hacerlo, algún ayudante de forma mágica o algo así, entonces eso es preferibl

c) Aunque estoy usando simple_form, no estoy casado con él, en caso de que eso sea complicado.

Gracia

Respuestas a la pregunta(2)

Su respuesta a la pregunta