I am trying to define a model for a legacy database and the primary key is the combination of two fields, ''branchcode'' and ''debtorno'' class Custbranch < ActiveRecord::Base set_table_name ''custbranch'' set_primary_key ''branchcode_branchno'' end and I have tried... set_primary_key ''branchcode branchno'' set_primary_key ''branchcode, branchno'' but in the console, a simple find, always an error...>> @branch=Custbranch.find("A365")ActiveRecord::StatementInvalid: Mysql::Error: Unknown column ''custbranch.branchcode_branchno'' in ''where clause'': SELECT * FROM `custbranch` WHERE (`custbranch`.`branchcode_branchno` = ''A365'')>> @branch = Custbranch.find("A365")ActiveRecord::StatementInvalid: Mysql::Error: Unknown column ''custbranch.branchcode branchno'' in ''where clause'': SELECT * FROM `custbranch` WHERE (`custbranch`.`branchcode branchno` = ''A365'')>> @branch = Custbranch.find("A365")ActiveRecord::StatementInvalid: Mysql::Error: Unknown column ''custbranch.branchcode, branchno'' in ''where clause'': SELECT * FROM `custbranch` WHERE (`custbranch`.`branchcode, branchno` = ''A365'') and the only way I seem to make it work is to use ''branchcode'' as the primary key which is not indexed. I can use this for now but I am wondering if it is possible to set_primary_key on a legacy db model to use a compound index/primary key. Craig -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Marnen Laibow-Koser
2009-Jul-31 16:50 UTC
Re: legacy database, primary key compound with two fields
Craig White wrote:> I am trying to define a model for a legacy database and the primary key > is the combination of two fields, ''branchcode'' and ''debtorno''[...] If you can''t add a surrogate key, try the composite_primary_keys plugin. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- Posted via http://www.ruby-forum.com/.