我有一个网站可以在前提下工作:
example.com/user_id/news/slug-for-article
默认情况下,我为文章启用了唯一的 slug,但是我希望每个用户在所有用户中都有唯一的 slug。
非唯一性是通过使用来处理的@user.articles.friendly.find(param)
。
如何设置它以确保唯一性,但仅限于定义的属性?
我有一个网站可以在前提下工作:
example.com/user_id/news/slug-for-article
默认情况下,我为文章启用了唯一的 slug,但是我希望每个用户在所有用户中都有唯一的 slug。
非唯一性是通过使用来处理的@user.articles.friendly.find(param)
。
如何设置它以确保唯一性,但仅限于定义的属性?
我会使用friendly_id。
它看起来像这样:
class Article < ActiveRecord::Base
extend FriendlyId
belongs_to :user
friendly_id :name, use: :scoped, scope: :user, slug_column: :permalink
如果有人选择相同的文章名称,friendly_id
将计算一个slug
与现有的不冲突的。
因此,例如:
/user_id/news/hello
/user_id/news/hello-2
如果您不想使用该 gem,则可以使用Rails
验证。
它看起来像这样:
class Article < ActiveRecord::Base
extend FriendlyId
belongs_to :user
validates_uniqueness_of :permalink, scope: :user_id
我希望它有所帮助。
A如果你有一个 has_many through: 关联,你可以将 slug 存储在第三个模型中......这是唯一可以存储用户和文章唯一数据的地方。
@user.articles_users.friendly.find(param).each do |association|
Articles.find(association.article_id)
end