ticket有可以发送消息的用户 - rails messaging

时间:2012-05-01 05:03:22

标签: ruby-on-rails ruby ruby-on-rails-3

我不确定如何为私人消息构建路由。当用户单击故障单时,它会显示故障单详细信息以及向用户发送有关故障单的消息的选项。但是,新的邮件路由看起来像users/:username/messages/new,但它应该反映用户(发件人)正在向另一个用户(接收方)发送有关当前正在查看的故障单的消息。如何使我的路线RESTful?

模型可以在这里找到:receiver_id not saving - rails messaging

修改

我最终将我的routes.rb更改为:

resources :users do
  resources :tickets do
    resources :messages
  end
end
resources :tickets

定义多个资源有什么不利之处吗?

1 个答案:

答案 0 :(得分:3)

通常,发送消息的用户不需要在路径中表示,因为该用户是通过当前用户会话识别的,因此离开收件人,票证以及创建必须创建新消息的操作通过路径确定。

这些剩余的东西可以用嵌套集合来表示,嵌套的顺序有些随意,除了消息集合应该是最深层嵌套的,因为它将接收“新”动作。嵌套选项则是票证,收件人,邮件或收件人,票证,邮件。对我来说,第一个嵌套似乎更直观。

...所以你的routes.rb文件...

resources :tickets do
  resources :recipients do
    resources :messages
  end
end

这将为您提供/tickets/[ticket-id]/recipients/[recipient-id]/messages/new的路径。请注意,id不必是记录的数字ID。您的控制器可以决定如何从参数中查找记录,您可以在模型上定义#to_param来控制路径助手方法将使用的内容。

当路由匹配该模式的路径的请求时,它将调用#new的{​​{1}}方法,并将在MessagesController中接收以下值:ticket_id和:recipient_id。