module Spree::Core::Permalinks
Public Instance Methods
find_by_param(value, *args)
click to toggle source
# File lib/spree/core/permalinks.rb, line 20 def find_by_param(value, *args) send("find_by_#{permalink_field}", value, *args) end
find_by_param!(value, *args)
click to toggle source
# File lib/spree/core/permalinks.rb, line 24 def find_by_param!(value, *args) send("find_by_#{permalink_field}!", value, *args) end
generate_permalink()
click to toggle source
# File lib/spree/core/permalinks.rb, line 46 def generate_permalink "#{self.class.permalink_prefix}#{Array.new(self.class.permalink_length){ rand(9) }.join}" end
make_permalink(options = {})
click to toggle source
# File lib/spree/core/permalinks.rb, line 13 def make_permalink(options = {}) options[:field] ||= :permalink self.permalink_options = options before_validation(on: :create) { save_permalink } end
permalink_field()
click to toggle source
# File lib/spree/core/permalinks.rb, line 28 def permalink_field permalink_options[:field] end
permalink_length()
click to toggle source
# File lib/spree/core/permalinks.rb, line 36 def permalink_length permalink_options[:length] || 9 end
permalink_order()
click to toggle source
# File lib/spree/core/permalinks.rb, line 40 def permalink_order order = permalink_options[:order] "#{order} ASC," if order end
permalink_prefix()
click to toggle source
# File lib/spree/core/permalinks.rb, line 32 def permalink_prefix permalink_options[:prefix] || "" end
save_permalink(permalink_value = to_param)
click to toggle source
# File lib/spree/core/permalinks.rb, line 50 def save_permalink(permalink_value = to_param) permalink_value ||= generate_permalink permalink_field = self.class.permalink_field loop do other = self.class.where(permalink_field => permalink_value) break unless other.exists? # Try again with a new value permalink_value = generate_permalink end write_attribute(permalink_field, permalink_value) end