我有一个多租户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