Merge pull request #1576 from siddhantbajaj/qr-code

Add token field in ticket
This commit is contained in:
Ana María Martínez Gómez
2017-07-25 11:46:04 +02:00
committed by GitHub
8 changed files with 33 additions and 9 deletions

View File

@@ -1,7 +1,7 @@
class PhysicalTicketController < ApplicationController
before_action :authenticate_user!
load_resource :conference, find_by: :short_title
load_and_authorize_resource
load_and_authorize_resource find_by: :token
authorize_resource :conference_registrations, class: Registration
def index

View File

@@ -4,4 +4,19 @@ class PhysicalTicket < ActiveRecord::Base
has_one :conference, through: :ticket_purchase
has_one :user, through: :ticket_purchase
has_many :ticket_scannings
before_create :set_token
private
def set_token
self.token = generate_token
end
def generate_token
loop do
token = SecureRandom.hex(10)
break token unless PhysicalTicket.exists?(token: token)
end
end
end

View File

@@ -32,12 +32,12 @@
.btn-group
= link_to 'Show',
conference_physical_ticket_path(@conference.short_title,
physical_ticket.id),
physical_ticket.token),
class: 'btn btn-primary'
= link_to 'Generate PDF',
conference_physical_ticket_path(@conference.short_title,
physical_ticket.id,
format: :pdf),
physical_ticket.token,
format: :pdf),
class: 'button btn btn-default btn-info'
- else
%h5 No Tickets sold!

View File

@@ -24,11 +24,11 @@
.btn-group
= link_to 'Show',
conference_physical_ticket_path(@conference.short_title,
physical_ticket.id),
physical_ticket.token),
class: 'btn btn-primary'
= link_to 'Generate PDF',
conference_physical_ticket_path(@conference.short_title,
physical_ticket.id,
physical_ticket.token,
format: :pdf),
class: 'button btn btn-default btn-info'
- else

View File

@@ -72,6 +72,6 @@
%p.text-left
= link_to 'Generate PDF',
conference_physical_ticket_path(@conference.short_title,
@physical_ticket.id,
@physical_ticket.token,
format: :pdf),
class: 'button btn btn-default btn-info'

View File

@@ -0,0 +1,6 @@
class AddIndexToPhysicalTickets < ActiveRecord::Migration
def change
add_column :physical_tickets, :token, :string
add_index :physical_tickets, :token, unique: true
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170711102511) do
ActiveRecord::Schema.define(version: 20170721001700) do
create_table "ahoy_events", force: :cascade do |t|
t.integer "visit_id"
@@ -317,8 +317,11 @@ ActiveRecord::Schema.define(version: 20170711102511) do
t.integer "ticket_purchase_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "token"
end
add_index "physical_tickets", ["token"], name: "index_physical_tickets_on_token", unique: true
create_table "programs", force: :cascade do |t|
t.integer "conference_id"
t.integer "rating", default: 0

View File

@@ -9,7 +9,7 @@ describe PhysicalTicketController do
describe 'GET #show' do
before :each do
sign_in user
get :show, id: physical_ticket.id, conference_id: conference.short_title
get :show, id: physical_ticket.token, conference_id: conference.short_title
end
it 'assigns ticket_layout' do