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
commit e2bad46d00
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