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

28 lines
584 B
Ruby

module MemberSlug
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.name.gsub(/[ "'*@#$%^&()+=;:.,?>|\\\/<~_!:,、。!?;「」〈〉【】/]/,'-')+"-"+self.uid).gsub(/-{2,}/,'-') rescue "-"+self.uid
end
private
def generate_uid
self.uid = rand(10**8).to_s
self.save if self.class.where(:uid=>self.uid).size > 0
end
end