Added Token field for physical_ticket
Added token field in physical_ticket model. This token will also be stored in the qr code and will uniqely identify the ticket.
This commit is contained in:
parent
0528dbf8e8
commit
9e154a1dcd
8 changed files with 33 additions and 9 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
class PhysicalTicketController < ApplicationController
|
class PhysicalTicketController < ApplicationController
|
||||||
before_action :authenticate_user!
|
before_action :authenticate_user!
|
||||||
load_resource :conference, find_by: :short_title
|
load_resource :conference, find_by: :short_title
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource find_by: :token
|
||||||
authorize_resource :conference_registrations, class: Registration
|
authorize_resource :conference_registrations, class: Registration
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,19 @@ class PhysicalTicket < ActiveRecord::Base
|
||||||
has_one :conference, through: :ticket_purchase
|
has_one :conference, through: :ticket_purchase
|
||||||
has_one :user, through: :ticket_purchase
|
has_one :user, through: :ticket_purchase
|
||||||
has_many :ticket_scannings
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -32,12 +32,12 @@
|
||||||
.btn-group
|
.btn-group
|
||||||
= link_to 'Show',
|
= link_to 'Show',
|
||||||
conference_physical_ticket_path(@conference.short_title,
|
conference_physical_ticket_path(@conference.short_title,
|
||||||
physical_ticket.id),
|
physical_ticket.token),
|
||||||
class: 'btn btn-primary'
|
class: 'btn btn-primary'
|
||||||
= link_to 'Generate PDF',
|
= link_to 'Generate PDF',
|
||||||
conference_physical_ticket_path(@conference.short_title,
|
conference_physical_ticket_path(@conference.short_title,
|
||||||
physical_ticket.id,
|
physical_ticket.token,
|
||||||
format: :pdf),
|
format: :pdf),
|
||||||
class: 'button btn btn-default btn-info'
|
class: 'button btn btn-default btn-info'
|
||||||
- else
|
- else
|
||||||
%h5 No Tickets sold!
|
%h5 No Tickets sold!
|
||||||
|
|
|
||||||
|
|
@ -24,11 +24,11 @@
|
||||||
.btn-group
|
.btn-group
|
||||||
= link_to 'Show',
|
= link_to 'Show',
|
||||||
conference_physical_ticket_path(@conference.short_title,
|
conference_physical_ticket_path(@conference.short_title,
|
||||||
physical_ticket.id),
|
physical_ticket.token),
|
||||||
class: 'btn btn-primary'
|
class: 'btn btn-primary'
|
||||||
= link_to 'Generate PDF',
|
= link_to 'Generate PDF',
|
||||||
conference_physical_ticket_path(@conference.short_title,
|
conference_physical_ticket_path(@conference.short_title,
|
||||||
physical_ticket.id,
|
physical_ticket.token,
|
||||||
format: :pdf),
|
format: :pdf),
|
||||||
class: 'button btn btn-default btn-info'
|
class: 'button btn btn-default btn-info'
|
||||||
- else
|
- else
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,6 @@
|
||||||
%p.text-left
|
%p.text-left
|
||||||
= link_to 'Generate PDF',
|
= link_to 'Generate PDF',
|
||||||
conference_physical_ticket_path(@conference.short_title,
|
conference_physical_ticket_path(@conference.short_title,
|
||||||
@physical_ticket.id,
|
@physical_ticket.token,
|
||||||
format: :pdf),
|
format: :pdf),
|
||||||
class: 'button btn btn-default btn-info'
|
class: 'button btn btn-default btn-info'
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# 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|
|
create_table "ahoy_events", force: :cascade do |t|
|
||||||
t.integer "visit_id"
|
t.integer "visit_id"
|
||||||
|
|
@ -317,8 +317,11 @@ ActiveRecord::Schema.define(version: 20170711102511) do
|
||||||
t.integer "ticket_purchase_id", null: false
|
t.integer "ticket_purchase_id", null: false
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.string "token"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "physical_tickets", ["token"], name: "index_physical_tickets_on_token", unique: true
|
||||||
|
|
||||||
create_table "programs", force: :cascade do |t|
|
create_table "programs", force: :cascade do |t|
|
||||||
t.integer "conference_id"
|
t.integer "conference_id"
|
||||||
t.integer "rating", default: 0
|
t.integer "rating", default: 0
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ describe PhysicalTicketController do
|
||||||
describe 'GET #show' do
|
describe 'GET #show' do
|
||||||
before :each do
|
before :each do
|
||||||
sign_in user
|
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
|
end
|
||||||
|
|
||||||
it 'assigns ticket_layout' do
|
it 'assigns ticket_layout' do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue