0

目前在我的消息表上使用friendly_id。消息访问如下:

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

我想这样使用它:

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

当我使用消息表中的“body”属性对其进行测试时,我的 gem 工作正常。发送了一条短消息“test”并尝试使用 site.com/messages/test 访问它,它工作正常。

但是我需要使用用户的用户名来做到这一点。我想知道是否有办法访问另一个模型属性,因为我的用户名存储在我的用户表中。我总是可以在我的消息表中创建一个用户名列并将他们的用户名保存在那里,但我不喜欢在我已经拥有另一个用户名列时拥有另一个用户名列的想法。

由于我的表是链接的,因此我可以使用他们的 sender_id 或 recipient_id 轻松找到消息发件人或收件人的用户名,因为这与他们在我的 users 表中的 ID 匹配。

有没有一种快速简便的方法来做我想做的事情,或者我必须求助于在我的消息表中创建一个用户名列?

亲切的问候

4

2 回答 2

0

这没有任何意义,也不是friendly_id 的用途 -/messages/8将加载单个消息实例,而将其替换为/messages/terrytibbs可能会加载用户 terrytibbs 接收/发送的消息列表。

我会在下创建一个正常的收集路线messages,例如。get :username然后在该操作中加载用户-> 获取他们的消息。

于 2013-02-02T14:08:51.427 回答
0

@sevenseacat 是对的,但我相信您会以这种方式发生路线冲突:

/messages/:id
/messages/:username

也许路由应该更像 /user/:id/messages 这将是用户下的消息的嵌套路由

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

运行rake routes查看生成的路由。在您的 MessagesController 中,您将收到 :user_id 并且可以轻松调用:

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

确保你has_many :messages在你的用户模型中工作。

于 2013-02-02T14:17:29.450 回答