Я хочу иметь модель «Customer
» с обычным первичным ключом и другим столбцом для хранения пользовательского «Номера клиентов». Кроме того, я хочу, чтобы база данных обрабатывала номера клиентов по умолчанию. Я думаю, что определение последовательности — лучший способ сделать это. Я использую PostgreSQL. Посмотрите на мою миграцию:
class CreateAccountsCustomers < ActiveRecord::Migration
def up
say "Creating sequenze for customer number starting at 1002"
execute 'CREATE SEQUENCE customer_no_seq START 1002;'
create_table :accounts_customers do |t|
t.string :type
t.integer :customer_no, :unique => true
t.integer :salutation, :limit => 1
t.string :cp_name_1
t.string :cp_name_2
t.string :cp_name_3
t.string :cp_name_4
t.string :name_first, :limit => 55
t.string :name_last, :limit => 55
t.timestamps
end
say "Adding NEXTVAL('customer_no_seq') to column cust_id"
execute "ALTER TABLE accounts_customers ALTER COLUMN customer_no SET DEFAULT NEXTVAL('customer_no_seq');"
end
def down
drop_table :accounts_customers
execute 'DROP SEQUENCE IF EXISTS customer_no_seq;'
end
end
Если вы знаете лучший «рельсовый» подход к добавлению последовательностей, было бы здорово сообщить мне об этом.
Теперь, если я сделаю что-то вроде
cust = Accounts::Customer.new
cust.save
поле customer_no
предварительно не заполняется следующим значением последовательности (должно быть 1002).
Вы знаете хороший способ интегрировать последовательности? Или есть хороший плагин? Здоровья всем ответам!