我有一個多租戶Rails應用程序來創建支持票據。票據應該有增量票號。我無法使用ID列,因爲由於該應用程序將被不同的帳戶使用,所以他們會發現奇數票號。Rails應用程序不同賬戶的增量門票號碼
例如,如果帳戶1創建了兩張票,他們得到門票#1和#門票2。帳戶2創建一張票,他得到票#3。 (這很奇怪,因爲他應該獲得第一張門票,因爲這是他在他的帳戶下創建的第一張門票)。
所以,我應該在ticket表中添加一個ticket_number列。現在,你會如何自動增加數字並與其他賬戶分開?
我有一個多租戶Rails應用程序來創建支持票據。票據應該有增量票號。我無法使用ID列,因爲由於該應用程序將被不同的帳戶使用,所以他們會發現奇數票號。Rails應用程序不同賬戶的增量門票號碼
例如,如果帳戶1創建了兩張票,他們得到門票#1和#門票2。帳戶2創建一張票,他得到票#3。 (這很奇怪,因爲他應該獲得第一張門票,因爲這是他在他的帳戶下創建的第一張門票)。
所以,我應該在ticket表中添加一個ticket_number列。現在,你會如何自動增加數字並與其他賬戶分開?
class Ticket
after_create :increment_tickets
def increment_ticket
Account.increment_counter(:ticket_number, self.account_id)
end
end
的解決方案應該是你的客戶表(你必須有一個,用於爲多租戶)應該由以下遷移擴展:
class AddCounter < ActiveRecord:Migration
def self.up
add_column :accounts, :ticket_counter, :integer
add_column :tickets, :ticket_number, :integer
end
end
每一次,你創建一個客戶的門票,你必須增加門票號碼。查看@ fl00r的帖子。票證的創建應該這樣(代碼從我的控制器):
class TicketController
def create
#Here comes your addition:
params[:ticket][:ticket_number]= Account.find(session[:account_id]).ticket_counter
# Here comes the rest
@article = Ticket.new(params[:ticket])
...
end
end
這裏的背景是:
session[:account_id]
,如果你有其他商店的當前帳戶,使用它)。params[:ticket]
散列中的ticket_counter
創建票證。
的增量,我明白,但破壞可能不起作用後遞減。如果你有門票1,2,3,並摧毀#2,那麼,這將是困難的。 – mliebelt
yeap,我沒有想過的東西 – fl00r