每个票证

时间:2015-12-11 20:46:48

标签: ruby-on-rails

我正在制作电影院,每个人都可以看电影并获得自己的门票。 我有两个问题:

  1. 我想给每张票都提供唯一的代码,这些代码将在客户预订机票后发送给电子邮件。如何在rails上的ruby中创建唯一代码。

  2. 我得到了表格customer(name,surname,email)ticket(type,numberofseats,seance_id,customer_id)以及方法ticket#new我还想制作customer,怎么做?

3 个答案:

答案 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你刚刚创建了。