2013-07-05 25 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