polymorphic associations

Sorry for my english if something goes wrong. I have a model of Property

class Property <ActiveRecord:: Base    has_many: values,: class_name => "ProductProperty" End

And correspondingly ProductProperty model in which values ​​are stored.

class ProductProperty <ActiveRecord:: Base    belongs_to: product    belongs_to: property end

Now the stored values ​​are of type String. Do I have a need to store different types of Integer, Boolean and String. I came up just one idea how to implement it. Add to the model Property column type. And rewrite the method values:

def values   case self.type     when 'ProductPropertyString'       ProductPropertyString.where(:property_id => self.id)     when 'ProductPropertyBoolean'       ProductPropertyBoolean.where(:property_id => self.id)     when 'ProductPropertyInteger'       ProductPropertyInteger.where(:property_id => self.id) end

Maybe somebody has already faced with this challenge and how to solve it correctly?

type attribute is of which model ?? I guess it is of property model and values method wrote inside property model, right ?

ProductPropertyString, ProductPropertyBoolean, ProductPropertyInteger are these models ??

if yes, why do you need association ? “has_many: values,: class_name => ‘ProductProperty’”

class Property <ActiveRecord:: Base    has_many: values,: class_name => "ProductProperty" End It was in the original model.

In the amended accordingly will: class Property <ActiveRecord:: Base    has_many :string_values,: class_name => "ProductPropertyString"    has_many :integer_values,: class_name => "ProductPropertyInteger"    has_many :boolean_values,: class_name => "ProductPropertyBoolean" End

But I think this solution is clumsy.