假设我在name的has_many关联中有一个唯一性约束。这意味着我不需要丑陋的数字序列添加到冲突的子弹。
举个例子,在一个game db中,有两个不同的人的名字可能是相同的:/person/1/games/cards和person/2/games/cards --这是两个不同的URL,但是第二个片段看起来像person/2/game/cards2bc08962-b3dd-4f29-b2e6-244710c86106。人有一个名称唯一性约束,他们的游戏名称,所以他们不能有2个游戏,称为‘卡片’,这将阻止2个相同的鼻涕虫生成。
问题是游戏的名称都是在一个db中排序的,所以冲突的段塞在不需要的时候会添加数字序列,所以urls变得不必要的丑陋。
希望这能解释我为什么想要它。
不管怎么说。怎样才能阻止数字序列被添加到冲突的子弹中?
发布于 2016-02-15 09:08:29
使用作用域功能
class Card
friendly_id :name, :use => :scoped, :scope => [:person]
end发布于 2016-02-15 10:42:18
要添加接受的答案,还有一个slug_candidates方法:
#app/models/card.rb
class Card < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
:name,
[:name, :person_id]
]
end
end以上所述将产生:
#url.com/players/1/games/cards
#url.com/players/2/games/cards-2虽然在满足您的需要方面不如scoped,但它将为您提供其他实现的一些选项。
https://stackoverflow.com/questions/35404784
复制相似问题