friendly_id переопределяет SecureRandom uuid / добавление последовательности чисел к URL-адресам слагов Rails

Я пытаюсь обойти метод friendly_id по умолчанию, который проверяет уникальное значение для определенного слага. Короче говоря, я хотел бы обойти проверку friendly_id на наличие слагов с одинаковым значением и чтобы он не добавлял --1 , --2 и т. д. Мне нужна возможность создавать записи с friendly_id, которые могут иметь одинаковый текст слагов.

        class Product < ActiveRecord::Base
         extend FriendlyId
         friendly_id :title, use: :slugged # use the title column to create slug column

person stonep    schedule 14.09.2013    source источник


Ответы (2)


Я думаю, что единственный способ сделать это - использовать области, чтобы каждый дубликат friendly_id существовал в своем собственном «пространстве области».

https://github.com/norman/friendly_id/blob/master/lib/friendly_id/scoped.rb#L7

Я предполагаю что-то вроде этого (при условии, что дубликаты friendly_id принадлежат разным users):

class Product < ActiveRecord::Base
  extend FriendlyId
  friendly_id :tite, :use => [:scoped,:slugged], :scope => :user
end
person Jeremy Green    schedule 15.09.2013

Спасибо за отличный ответ, решение области, безусловно, правильный путь. Хотя, просто чтобы помочь другим, на самом деле не нужно было выполнять полную область действия для пользовательского объекта. Я просто сделал это:

     friendly_id :title, :use => :scoped, :scope => :id

и поместите область действия на идентификатор в таблице для записи. Поскольку каждый идентификатор уникален, слаг будет одинаковым и не будет добавлять --1 и т. д.

person stonep    schedule 15.09.2013