2

特定のスラッグの一意の値を検証するデフォルトの 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
4

2 に答える 2

5

それを行う唯一の方法は、スコープを使用して、各複製friendly_idが独自の「スコープ空間」に存在できるようにすることだと思います。

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

私は次のようなことを推測しています(重複したfriendly_ids が異なる s に属していると仮定しますusers):

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 は一意であるため、スラッグは同じになり、--1 などは追加されません。

于 2013-09-15T19:22:21.850 に答える