Hi, I'm actually coding an application which use data from an other one. (Zone > Region > Country > Location exactly) which are not in the best form. There are primary keys defined on the names of the zone / region / ... and link between tables with foreign keys using the primary keys of the parrent table (logical) I must use this data but I must use the Rails format in the database (foreign keys on id) I can't modify the other database / application. Do you have an idea how to realize that ? PS: sorry for my poor english :s
on 2009-06-08 11:09
on 2009-06-08 12:33
It is not clear to me whether you need to access the data in the existing database from within a rails app, keeping the existing db format, or whether you are trying to do a one time extraction of the data from the existing database into a new one which is in conventional rails format. ( You said you cannot change the existing db, but you also said you must use the rails format in the db). Colin 2009/6/8 Arnaud G. <email@example.com>:
on 2009-06-08 14:12
In a short time after the application goes on, there will be an automatic update of the location tables from the other database. Because the structure of each database (original one and mine) are not the same, it will be harder. Is there a trick to handle this problem in Rails (to keep the classic structure for primary and foreign keys in Rails) or is it better to keep the original struture i would like to import for primary and foreign keys ? (and use a plugin to define primary / foreign keys in Rails)
on 2009-06-09 13:17
Here is a part of the struture : ==== Migration - create zones ... t.string :code_zone, :limit => 5 t.string :desc_zone, :limit => 40 t.string :tool_status, :limit => 1 ... ==== Model zone validates_uniqueness_of :code_zone has_many :regions ==== Migration - add zones ... Zone.create(:code_zone => 'EUROP', :desc_zone => 'Europe', :tool_status => 'A') Zone.create(:code_zone => 'NAMER', :desc_zone => 'North America', :tool_status => 'A') ... ==== Migration - create regions ... t.string :code_region, :limit => 5 t.string :desc_region, :limit => 40 t.string :tool_status, :limit => 1 t.references :code_zone ... ==== Model region validates_uniqueness_of :code_region belongs_to :zone ==== Migration - add regions ... Region.create(:code_region => 'AFRIC', :desc_region => 'Africa', :tool_status => 'A', :code_zone => 'INTER') Region.create(:code_region => 'ASIA', :desc_region => 'Asia Pacific', :tool_status => 'A', :code_zone => 'ASIA') Region.create(:code_region => 'USA', :desc_region => 'USA', :tool_status => 'A', :code_zone_id => 'NAMER') ... I would like to add a find method which return the id of the code zone name entered within Region.create(...) Is it possible to rewrite the create method used to create entries in the database ?