我无法解决这个问题。使用documentation
我有两个型号
class Region < ActiveRecord::Base
extend FriendlyId
has_many :pages
friendly_id :name, :use => :slugged
end
class Page < ActiveRecord::Base
extend FriendlyId
belongs_to :region
friendly_id :name, :use => :scoped, :scope => :region
end
根据文档,这应该有效。但是当我创建一个页面时,它不会通过作用域创建一个slug,这意味着当我创建另一个具有相同名称的页面时,我会得到重复的索引错误。
答案 0 :(得分:4)
如果您正在使用类似这样的内容在slug字段中索引页面:
add_index :page, :slug, :unique => true
然后你可能想把它换成slug和region的索引:
remove_index :page, :slug
add_index :page, [:slug, :region_id], :unique => true
该文档介绍了如何在FriendlyId 5中一起开始使用:history
和:scoped
,也许这可以为您提供有关如何在您的案例中解决问题的一些想法:http://rubydoc.info/github/norman/friendly_id/master/file/README.md#Upgrading_from_FriendlyId_4_0
或者,您可以删除唯一性约束,因为我现在看到您已回复我的原始评论。 :)
remove_index :page, :slug
add_index :page, :slug # no :unique here