30 lines
1.1 KiB
Ruby
30 lines
1.1 KiB
Ruby
class JamRuby::AffiliatePartner < ActiveRecord::Base
|
|
has_one :partner_user, :class_name => "JamRuby::User", :foreign_key => :partner_user_id
|
|
has_many :user_referrals, :class_name => "JamRuby::User", :foreign_key => :affiliate_referral_id
|
|
|
|
attr_accessible :partner_name, :partner_code, :partner_user_id
|
|
|
|
PARTNER_CODE_REGEX = /^[#{Regexp.escape('abcdefghijklmnopqrstuvwxyz0123456789-._+,')}]+{2,128}$/i
|
|
|
|
validates :user_email, format: {with: JamRuby::User::VALID_EMAIL_REGEX}, :if => :user_email
|
|
validates :partner_name, presence: true
|
|
validates :partner_code, presence: true, format: { with: PARTNER_CODE_REGEX }
|
|
validates :partner_user, presence: true
|
|
|
|
def self.create_with_params(params={})
|
|
oo = self.new
|
|
oo.partner_name = params[:partner_name].try(:strip)
|
|
oo.partner_code = params[:partner_code].try(:strip)
|
|
oo.partner_user = User.where(:email => params[:user_email].try(:strip)).limit(1).first
|
|
oo.partner_user_id = oo.partner_user.try(:id)
|
|
oo.save!
|
|
oo
|
|
end
|
|
|
|
def self.coded_id(code=nil)
|
|
self.where(:partner_code => code).limit(1).pluck(:id).first if code.present?
|
|
end
|
|
|
|
end
|
|
|