2

我正在尝试绕过默认的 friendly_id 方法,该方法验证特定 slug 上的 uniq 值。简而言之,我想绕过 friendly_id 检查具有相同值的 slug 并且不附加 --1 、 --2 等。我需要能够创建具有相同 slug 文本的friendly_id 记录。

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

2 回答 2

5

我认为这样做的唯一方法是使用范围来允许每个副本friendly_id存在于自己的“范围空间”中。

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

我猜是这样的(假设重复friendly_id的s属于不同users的s):

class Product < ActiveRecord::Base
  extend FriendlyId
  friendly_id :tite, :use => [:scoped,:slugged], :scope => :user
end
于 2013-09-15T04:14:04.547 回答
3

感谢您的出色回答,示波器解决方案绝对是正确的路径。虽然,只是为了帮助其他人,确实不需要对用户对象进行完整的范围。我只是这样做了:

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

并将范围放在表中的id上进行记录。由于每个 id 都是唯一的,所以 slug 将是相同的并且不会附加 --1 等。

于 2013-09-15T19:22:21.850 回答