orbit4-5/app/models/concerns/slug.rb

27 lines
580 B
Ruby

module Slug
extend ActiveSupport::Concern
included do
field :uid, type: String
index({ uid: 1}, { unique: true })
validates_uniqueness_of :uid
before_create :generate_uid
end
def to_param
if self.uid.blank?
generate_uid
self.save
end
(self.slug_title.gsub(/[ "'*@#$%^&()+=;:.,?>|\\\/<~_!:,、。!?;「」〈〉【】/]/,'-')+"-"+self.uid).gsub(/-{2,}/,'-') rescue "-"+self.uid
end
def generate_uid
self.uid = rand(10**8).to_s
generate_uid if self.class.where(:uid=>self.uid).size > 0
end
end