2013-07-05 20 views
0

我已经有一个前提作品网站:回报率:friendly_id独特的用户

example.com/user_id/news/slug-for-article

默认情况下,我已经启用的文章独特的蛞蝓,但是我想有每个用户独特的蛞蝓,覆盖所有用户。

非唯一性通过使用@user.articles.friendly.find(param)来处理。

我该如何设置它以确保唯一性,但仅限于定义的属性?

回答

3

我会用friendly_id

它应该是这样的:

class Article < ActiveRecord::Base 
    extend FriendlyId 
    belongs_to :user 

    friendly_id :name, use: :scoped, scope: :user, slug_column: :permalink 

万一有人取走了同一篇文章的名字,friendly_id将计算slug不会与现有的冲突。

因此,举例来说:

  1. 文章ID为#1命名为 “你好” 将具有永久/user_id/news/hello
  2. 文章ID为#2也叫 “你好” 将具有永久/user_id/news/hello-2

如果你不想使用那个宝石,你可以使用Rails验证。

它会是这样的:

class Article < ActiveRecord::Base 
    extend FriendlyId 
    belongs_to :user 

    validates_uniqueness_of :permalink, scope: :user_id 

好老validates_uniqueness_of

我希望它有帮助。

+0

谢谢,但这是我已经在做的。我需要的鼻涕虫是唯一取决于关系 – Ashley

+0

和'validates_uniqueness_of:永久链接,范围:user_id'不起作用? – etagwerker

1

AIF你必须通过的has_many:关联中,你可以在塞存储在第三个模型......这是在那里你可以存储用户唯一的文章和两个数据的唯一地方。

@user.articles_users.friendly.find(param).each do |association| 
     Articles.find(association.article_id) 
    end