0

目前在我的消息表上使用friendly_id。消息被訪問是這樣的:如何使friendly_id gem使用來自其他模型的屬性?

site.com/messages/id e.g. site.com/messages/8 

我想用這樣的:

site.come/messages/username e.g. site.com/messages/terrytibbs 

我已經得到了創業板工作的罰款,我的「身體」屬性測試了我消息表。發送短信「測試」,並嘗試使用site.com/messages/test訪問它,它工作正常。

但是我需要使用用戶名來做到這一點。我想知道是否有方法訪問另一個模型屬性,因爲我的用戶名存儲在我的用戶表中。我總是可以在我的郵件列表中創建一個用戶名列,並將他們的用戶名保存在那裏,但不喜歡當我已經擁有另一個用戶名列的想法。

由於我的表格已鏈接,因此可以使用他們的sender_id或recipient_id輕鬆找出郵件發件人或收件人用戶名,因爲它們與我的用戶表中的ID相匹配。

有沒有一種快速簡單的方法來做我想做的事情,還是我不得不求助於在我的消息表中創建一個用戶名列?

親切的問候

回答

0

@sevenseacat是正確的,但我相信你將有一個路線衝突的方法:

/messages/:id 
/messages/:username 

或許路線應該更像/用戶/:ID /信息,這將是消息的下一個嵌套路線用戶

resources :users do 
    resources :messages, only: [:index] 
end 

運行rake routes查看生成的路由。在你MessagesController,您將收到:USER_ID並能夠輕鬆地撥打:

User.find(params[:user_id]).messages 

請確保您有has_many :messages在您的用戶模式工作。

+0

啊,是的!我有路線衝突。我想知道爲什麼在我做出的更改後site.com/id停止工作。只是想保持URL清潔。有些方法可以做到這一點,但對於如此簡單的事情來說,它們似乎是一種可笑的漫長方式。我希望它沒有打擾我,我可以繼續做下去。也許你的建議是我現在最好的選擇。 – LondonGuy

+0

閱讀您對@sevenseacat的評論後,可能所有這些可能都太多了。如果你有一個current_user登錄,你可以簡單地調用他的.messages。但是如果你想公開顯示其他用戶的消息,你需要我的建議。 – mathieugagne

0

這沒有意義做的,是不是有什麼friendly_id是 - /messages/8將加載一個消息的單個實例,同時與/messages/terrytibbs取代它大概會加載列表由用戶terrytibbs接收/發送的消息。

我會在messages下創建一個正常的收集路線,例如。 get :username然後加載用戶 - >獲取他們的消息,在那個動作中。

+0

這不是我建立我的系統的方式。它會加載第一條消息,然後第一條消息中的孩子就是那個對話中的所有其他消息。如果以terrytibbs身份登錄並鍵入另一個用戶名,它將加載他與該用戶之間的對話。在該對話中,兩個用戶和第一個消息之間只有一次對話。 – LondonGuy

相關問題