Как назначить мое собственное автоинкрементное поле? - PullRequest
0 голосов
/ 12 ноября 2011

Мое приложение должно автоматически назначать номер (начиная с 1001) для записей определенного типа (например, контрольный регистр). Номер должен отображаться как часть экрана ввода, но, конечно, его нельзя изменить.

Как мне это сделать в Rails?

Примечание: это не имеет никакого отношения к полю id.

1 Ответ

2 голосов
/ 12 ноября 2011

Как я знаю, вы можете установить в таблицу только один столбец auto_increment, который также должен быть определен как primary key. Так что это не вариант для вас, потому что поле id является primary key вашей таблицы.

Так что вам нужно сделать это приложение внутренним. Просто добавьте столбец integer в таблицу:

add_column :table_name, :column_name, :integer

Затем добавьте в модель метод, который вычисляет значение столбца в последнем созданном наборе данных.

def self.last_<column_name>_used
     return last.<column_name> unless last.nil?
     return 1000
end

def self.next_<column_name>_to_use
     last_<column_name>_used+1
end

Затем вы можете использовать filter для автоматического присвоения значения Model.next__to_use тому, которое должно быть увеличено, и вы также можете использовать его для получения значения, которое должно отображаться в форме. Форма может быть легко отключена с помощью jQuery.

$('#model_<column_name>').attr("disabled", true);

Надеюсь, это то, что вам нужно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...