轨道上的红宝石 - 如何使friendly_id gem 使用其他模型中的属性



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

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

我想像这样使用它:

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

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

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

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

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

亲切问候

@sevenseacat是对的,但我相信这样你就会遇到路由冲突:

/messages/:id
/messages/:username

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

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

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

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

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

这样做没有

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

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

相关内容

  • 没有找到相关文章

最新更新