Desidero avere un modello "Customer
" con una normale chiave primaria e un'altra colonna per memorizzare un "numero cliente" personalizzato. Inoltre, voglio che il db gestisca i numeri cliente predefiniti. Penso che definire una sequenza sia il modo migliore per farlo. Io uso PostgreSQL. Dai un'occhiata alla mia migrazione:Come aggiungere sequenze a una migrazione e utilizzarle in un modello?
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
Se conosci una migliore "binari-like" approccio per aggiungere sequenze, sarebbe fantastico per farmi sapere.
Ora, se faccio qualcosa di simile
cust = Accounts::Customer.new
cust.save
il campo customer_no
non è pre riempita con il valore successivo della sequenza (dovrebbe essere 1002).
Conosci un buon metodo per integrare le sequenze? O c'è un buon plugin? Saluti a tutte le risposte!
Fantastico! Ha funzionato per me – Hiasinho