父资源独有的friendly_id 范围

Posted

技术标签:

【中文标题】父资源独有的friendly_id 范围【英文标题】:friendly_id scope unique to parent resource 【发布时间】:2014-03-22 04:20:18 【问题描述】:

是否可以将 slug 限定为父资源,以便两个用户可以共享同一个资源 slug?示例:

两个用户会有新闻文章“i-am-awesome”

域/joe/news/i-am-awesome 域名/sara/news/i-am-awesome

我已经为用户资源的唯一性对 slug 进行了自定义验证,但这仍然会为第二个用户生成 UUID。最终成为:

域/sara/news/i-am-awesome-UUID

【问题讨论】:

【参考方案1】:

提供帮助可能为时已晚,但可以,您可以将friendly_id 限定为范围。来自documentation:

class Restaurant < ActiveRecord::Base
  extend FriendlyId
  belongs_to :city
  friendly_id :name, :use => :scoped, :scope => :city
end

class City < ActiveRecord::Base
  extend FriendlyId
  has_many :restaurants
  friendly_id :name, :use => :slugged
end

City.friendly.find("seattle").restaurants.friendly.find("joes-diner")
City.friendly.find("chicago").restaurants.friendly.find("joes-diner")

【讨论】:

以上是关于父资源独有的friendly_id 范围的主要内容,如果未能解决你的问题,请参考以下文章

多态父类引用指向子类对象时,如何调用子类的独有方法?

friendly_id:可选择更新 slug

Rails gem“friendly_id”:如何在创建对象之前获得 slug 的实时预览

Rails:friendly_id 和 to_json

使用friendly_id时如何find_by_id(对于多态关系)

rails,friendly_id,设计用户名不显示 slug