You need to create an instance of the actual class. Since you’re creating it on Asset, the validations won’t fire.
Determine what type to create and create it dynamically.
asset_type = params[:asset][:class_name]
do something here to restrict what type of asset you’re dealing with… we don’t want them hacking
your system because the next line instantiates a class based off of the string!
@asset = asset_type.constantitze.new
Put all validations on Asset and then run them conditionally with the :if option.
validates_presense_of :description, :if=> :is_a_document?
self.class_name == “Document”