module Permalinkable::InstanceMethods
Public Instance Methods
to_param()
click to toggle source
# File lib/permalinkable/permalinkable.rb, line 31 def to_param existing_permalink = send(permalink_options[:permalink_field_name]) (existing_permalink.present? && existing_permalink) || id.to_s end
Private Instance Methods
fpe()
click to toggle source
# File lib/permalinkable/permalinkable.rb, line 51 def fpe @fpe ||= Base64.urlsafe_encode64(self.class.permalink_cipher.update('%11s' % self.id)) end
generate_permalink()
click to toggle source
# File lib/permalinkable/permalinkable.rb, line 37 def generate_permalink sanitized = self.send(permalink_options[:permalinkable_attribute]).gsub(/[^[:alnum:]]/, ' ').strip.gsub(/\W+/, '-') "#{fpe}-#{sanitized}"[0..permalink_options[:length]] end
save_permalink()
click to toggle source
# File lib/permalinkable/permalinkable.rb, line 42 def save_permalink generated_permalink = generate_permalink if self.send(permalink_options[:permalink_field_name]).blank? || \ ( permalink_options[:allow_change] && generated_permalink != self.send(permalink_options[:permalink_field_name]) ) self.class.unscoped.where(self.class.primary_key => self.id).update_all( permalink_options[:permalink_field_name].to_s => generated_permalink ) raw_write_attribute(permalink_options[:permalink_field_name].to_s, generated_permalink) end end