我正在制作电影院,每个人都可以看电影并获得自己的门票。 我有两个问题:
我想给每张票都提供唯一的代码,这些代码将在客户预订机票后发送给电子邮件。如何在rails上的ruby中创建唯一代码。
我得到了表格customer(name,surname,email)
和ticket(type,numberofseats,seance_id,customer_id)
以及方法ticket#new
我还想制作customer
,怎么做?
答案 0 :(得分:1)
如果有人在寻找唯一的令牌。我宁愿使用基于时间的方法。对于不太频繁的请求(每秒最多一次)。您可以使用
Time.now.to_i
以字符串Time.now.to_i.to_s
的形式获取它
如果您在生成令牌时要处理频繁的请求(每秒数千次)。使用浮动对话
Time.now.to_f #1532415770.0032046
要以字符串形式获取它,可以使用Time.now.to_f.to_s.gsub(".", "")
,尽管不建议这样做。
在当前的宇宙中,悔改的机会接近于零。
答案 1 :(得分:0)
您可以做的是在他下订单时生成唯一身份证+他的客户编号。客户在同一时间订购更多门票的可能性是零。
答案 2 :(得分:0)
对于唯一令牌,请确保token
模型中有Ticket
字段:
class Ticket < ActiveRecord::Base
before_create :generate_token
protected
def generate_token
self.token = loop do
random_token = SecureRandom.urlsafe_base64(nil, false)
break random_token unless Ticket.exists?(token: random_token)
end
end
end
在customer
中制作新的ticket#new
:
def new
@ticket = Ticket.new
@customer = Customer.new
end
并在您的ticket#create
操作中,您需要先使用params[:customer]
创建客户,然后使用params[:ticket]
创建一个客户,并从客户处创建customer_id
你刚刚创建了。