legacy MTI schema

Hi all, In a legacy 'immutable' schema I have MTI inheritance setting:

<<TABLE systems>>

id<<PK>> ( NOT database generated) installation_date manufacturer serial_number

<<TABLE lifters>> id<<PK>><<FK>> ( NOT database generated ) max_weight drive

In my model I have implemented the semantic of inheritance between System and Lifter in this way:

class System < ActiveRecord::Base

has_one :lifter          :foreign_key=>:id,          :dependent=>:destroy,          :autosave=>:true

delegate :drive, :drive=, :max_weight,:max_weight=,:to=>:lifter

# trick for polymorphic query

end

class Lifter

  belongs_to :system,                   :foreign_key=>:id,                   :dependent=>:destroy,                   :autosave=>:true

  delegate :manufacturer,            :manufacturer=,            :serial_number,            :serial_number=,            :installation_date,            :installation_date, :to=>:system

  alias system_without_build system

  def system

      system_without_build || build_system   end

end

In the client code :

lifter = Lifter.new lifter.id=1327 lifter.installation_date= Date.parse("7/8/2010") lifter.manufacturer="FooLift" lifter.serial_number="1324AA" lifter.drive="Automatic" lifter.max_weight=1200

lifter.save!

performs this wrong (in id) INSERTS:

INSERT INTO `systems`     (`installation_date`, `manufacturer`, `serial_number`)     VALUES (?, ?, ?) [   ["installation_date", Sun, 07 Aug 2010],   ["manufacturer", "FooLift"],   ["serial_number", "1324AA"] ]

INSERT INTO `lifters`   (`drive`, `id`, `max_weight`)   VALUES (?, ?, ?)   [    ["drive", "Automatic"], ["id", 0], ["max_weight", 1200]   ]

seems to loose the pre-assigned id setting (id=1327) and attempts to fetch a database generated id. In other words after saving, lifter.id == 0

I didn't understand why, can someone help me please?

Thanks