I have a multiple models (ie. tires and rims). Multiple models have multiple parameters (like color, size, type, etc.)
I have this:
Parameter:
belongs_to :tires
belongs_to :rims
ParameterValue:
belongs_to :parameter
belongs_to :tires, :through => :parameter
belongs_to :rims, :through => :parameter
Tire:
has_many :parameters
Rim:
has_many :parameters
Here goes the problem. Multiple models can have same parameters-value pairs so creating separate models like RimParameterValue and TireParameterValue isn't optimal, IMO.
Can I create a dynamic
#<ParameterValue object_model: 'rim', object_id: 1542, parameter_id: 15674, value: 'Yes'>
instead of
#<RimParameter rim_id: 1542, parameter_id: 15674, value: 'Yes'>
?
Additionally, is there any ActiveRecord sorcery that could allow me to implement something like Tire.compatible_rims which would return only those parameter union (bead_diameter, width) has the same values?
Use polymorphic association as follows:
Now parameters can be accessed as @tire.parameters or @rim.parameters.