2017-03-24 1 views
0

Ich habe zwei ModelleSecondary Fremdschlüssel, der für jeden Verein erhöht

class Post < ActiveRecord::Base 
    has_many :comments 
end 

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

Gibt es trotzdem einen Fremdschlüssel zu haben, die von der Anzahl der comments in einem bestimmten post (so dass der Benutzer nicht sieht, basierend inkrementiert die Anzahl der Kommentare basierend auf comment_id)?

Zum Beispiel jeden Kommentar der Post sollte mit dem Index 1 beginnen:

Post.find(1).comments.first.relative_id # 1 
Post.find(2).comments.first.relative_id # 1 

Dies macht es möglich, dass eine Strecke wie:

# The total number of comments is hidden because comment_id is not used 
get 'post/:post_id/comments/:relative_id' => 'comments#show' 

Example: 
/post/1/comments/1 would refer to Comment.find(1) 
/post/2/comments/1 would refer to Comment.find(2) 
+0

Würde sich die URL 'post/comments/1' auf den Kommentar zu Post # 1 oder den Kommentar zu Post # 2 beziehen? –

+0

Könnte einer sein. Sorry die Route ist eigentlich: 'Get 'Beitrag /: Post-ID/Kommentare /: relative_id' => 'Kommentare # show'' Ich habe die Frage aktualisiert. – Taylor

Antwort

0

Ich würde vorschlagen, dass Sie Ihre URL des Fabrikats Formular post/:post_id/comments/:comment_id, so dass sie eindeutig sind.

Sie können immer noch eine fortlaufende Nummer in Ihrer URL, verwende ich auf etwas aussehen würde wie die acts_as_list Juwel (https://github.com/swanandp/acts_as_list)

Sie wollen wahrscheinlich noch die normale ID intern verwenden, aber Sie können die position verwenden in url gerade ist Stellen Sie sicher, dass es in Ihrer Datenbank indiziert ist.