Hi,
I am forced to use an old database with rails.
Relevant db structure;
mysql> select id,permission,incid from acl group by id;
±—±-----------±------+
| id | permission | incid |
±—±-----------±------+
| 1 | 58 | 1 |
| 2 | 57 | 25 |
| 3 | 57 | 32 |
±—±-----------±------+
Show create table acl:
CREATE TABLE acl (
idint(4) NOT NULL, .....incidint(11) NOT NULL auto_increment, PRIMARY KEY (id,type,seq,incid), UNIQUE KEYincid(incid`)
So the primary key that I want to use in place of id is “incid”
“id” contains some acl ids and is not auto increment (has multiple
rows returned per one id).
My model looks like this:
class Acl < ActiveRecord::Base
set_table_name :acl;
set_primary_key :incid;
def self.primary_key() ‘incid’; end
self.primary_key = ‘incid’;
set_inheritance_column :ruby_id;
end
script/console
r = Acl.find(2); <-- that’s checking for
incid
?> r.id
=> 2
log:
Acl Load (0.3ms) SELECT * FROM acl WHERE (acl.incid = 2)
script/console
r = Acl.find(31);
?> r.id
=> 31
Acl Load (0.3ms) SELECT * FROMaclWHERE (acl.incid= 31)
So, instead of r.id returning the value of the id field , it returns
the value for the incid field.
For the second example it should have returned 2 instead of 31
which is actually the value of incid
mysql> select id,permission,incid from acl where incid=‘31’;
±—±-----------±------+
| id | permission | incid |
±—±-----------±------+
| 2 | 57 | 31 |
±—±-----------±------+
What should my model look like to be able to get the value of the id
field?
Dan