我仍然是Rails的新手,当我开始发明东西时,我知道我没有按照Rails的方式做事;)
如何解决以下问题而不重复自己并遵循Rails约定?
我的应用中的用户可以相互发送消息。他们可以在查看某人通过列表展示视图中找到的表单销售的商家信息时执行此操作: / listing / X
但是,一旦以下列形式购买商品,他们也可以互相发送消息,例如: 的 /管理/付款/ Y
我通过将表单分别发布到列表和付款控制器到消息操作来解决了这个问题。要进行非CRUD操作,我在routes.rb中添加了成员:
resources :listings, :payments do
member do
post 'messaging'
end
end
这样两个控制器都有我可以发布消息表单的动作,然后在消息传递方法中我使用Message.new等创建了消息。
像魅力一样工作,但我认为必须有更好的方法,例如将两个表单张贴到单独的MessagesCottroller::create
方法?
另外,也许我应该将消息逻辑提取到一个问题中并将其包含在ListingsController
,PaymentsController
或任何其他需要“处理”新消息的控制器中,因为它不是这样干的?
还有一件事......所有邮件belongs_to
对话,所以我创建了ConversationsController
,作为每个用户的所有会话的收件箱,我只使用索引并显示列出所有会话的操作分别显示每个对话。
当用户打开 / conversation / X 时,他会看到所有邮件和要回复的表单。正如您所看到的,用户不会发布会话,而是发布消息。
因此,考虑到邮件属于对话,邮件是通过列表/ x,付款/ Y或会话/ X中的表单发布的,我应该通过以下方式解决此问题:
非常感谢