I have been experimenting with Single Table Inheritance as described in
the More Active Record chapter in Agile Development with Rails.
I have started with an object model with three classes x, y and z (for
brevity), where y < x and z < y. (I will want to extend this model
further to subclass y with other classes.)
I have created a table called x (plural) in the database with
attributes for x, y and z and a type attribute.
I then built a default scaffold application for x and added the
subclasses y and z in the model x.rb. Using ‘console (irb)’ the
behaviour is as expected, that is,
z.create(…) - creates a row in the table x with the type = ‘z’ and
the attributes of x, y, z set accordingly.
This is not the case however when I use the scaffold-generated ‘create’
page. When using this to create rows in table x, the entered attributes
(eg, x.a and z.b) are set correctly in the newly created table row but
the ‘type’ is not set (to z). I assume I need to change either the
controller or model to get the correct behaviour, and would appreciate
some guidance as to how to approach this.
Thanks in advance.