ActiveRecord :id offset

Hello, I am currently mapping ActiveRecord to an existent database system and there is one oddity in it: the primary key starts with 1 and not with 0 and it is not even marked as auto increment. I can't change the table or the column names since it would brake this legacy structure.

So my question is, how do I force ActiveRecord to automatically create primary key values max + 1, where max is either 0 if no entry is existent or the max primary key value in the table.

Andrius Bentkus wrote in post #957976:

Hello, I am currently mapping ActiveRecord to an existent database system and there is one oddity in it: the primary key starts with 1 and not with 0 and it is not even marked as auto increment. I can't change the table or the column names since it would brake this legacy structure.

So my question is, how do I force ActiveRecord to automatically create primary key values max + 1, where max is either 0 if no entry is existent or the max primary key value in the table.

This would be done on the database side, not in Rails. You need to mark the column as auto-increment.

Best,

Andrius Bentkus wrote in post #957976:

> Hello, > I am currently mapping ActiveRecord to an existent database system and > there is one oddity in it: the primary key starts with 1 and not with > 0 and it is not even marked as auto increment. > I can't change the table or the column names since it would brake this > legacy structure.

> So my question is, how do I force ActiveRecord to automatically create > primary key values max + 1, where max is either 0 if no entry is > existent or the max primary key value in the table.

This would be done on the database side, not in Rails. You need to mark the column as auto-increment.

I really don't want to touch the database at all, I would like to have this done all by overriding some ActiveRecord methods. On the other side, how do i mark the column as auto-increment with AR?

Andrius Bentkus wrote in post #958108:

> primary key values max + 1, where max is either 0 if no entry is > existent or the max primary key value in the table.

This would be done on the database side, not in Rails. You need to mark the column as auto-increment.

I really don't want to touch the database at all, I would like to have this done all by overriding some ActiveRecord methods.

That is a bad idea. The database should be controlling the autoincrementation. AR should not be.

On the other side, how do i mark the column as auto-increment with AR?

You don't AFAIK. You mark it as auto-increment in the DB.

You are trying to reinvent DB features in the application layer. This is a dreadful idea. Don't waste your time.

Best,