Sha256: 3bde5f8f1cf66d674bc962fa49363e289fb1122342587a145394085dccc39ee5

Contents?: true

Size: 819 Bytes

Versions: 1

Compression:

Stored size: 819 Bytes

Contents

require 'devise/hooks/referable'

class Referral < ActiveRecord::Base
  belongs_to :referrer, :polymorphic => true
  belongs_to :recipient, :class_name => 'User'
  
  before_create :generate_token
  
  class << self
    def referrer_types
      User.referrer_types
    end

    def lookup_referrer(token)
      unless token.blank?
        referrer_types.map{ |type| type.to_s.classify.constantize }.each do |klass|
          ref = klass.find_by_referrer_token(token)
          return ref unless ref.nil?
        end
      end
      return nil
    end

    def from_token(token)
      sender = lookup_referrer(token)
      if sender
        Referral.create do |ref|
          ref.referrer = sender
        end
      end
    end
  end
  
  def generate_token
    self.referral_token ||= Devise.friendly_token
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
devise_referable-0.1.0 app/models/referral.rb