【发布时间】:2011-03-26 16:12:19
【问题描述】:
好的,所以我有一个照片模型和处理照片的控制器。我有两个其他模型餐厅和菜,我希望能够让照片模型处理照片。所以我创建了照片模型,它作为对菜肴或餐厅数据库表的多态引用。我应该使用餐厅控制器来处理上传餐厅照片并为菜肴控制器处理上传照片,还是应该使用照片控制器来处理两者的上传?
【问题讨论】:
标签: ruby-on-rails ruby polymorphic-associations
好的,所以我有一个照片模型和处理照片的控制器。我有两个其他模型餐厅和菜,我希望能够让照片模型处理照片。所以我创建了照片模型,它作为对菜肴或餐厅数据库表的多态引用。我应该使用餐厅控制器来处理上传餐厅照片并为菜肴控制器处理上传照片,还是应该使用照片控制器来处理两者的上传?
【问题讨论】:
标签: ruby-on-rails ruby polymorphic-associations
使用多态类的唯一原因是它们的业务(或其他)逻辑非常相同,唯一的区别是它们的数据结构(也有相似的部分)。因此,您应该使用带有单个控制器的多态模型,或者带有单独控制器的单独类(模型)。
当然,您可以为多态模型使用单独的控制器,但我认为这超出了最佳实践
【讨论】:
使用此方案,您可以将照片视为餐厅和菜肴记录的一些复杂属性。所以我可能会在处理餐厅和菜肴的其他属性的地方上传照片。在 RESTful 方案中,这将发生在restaurants_controller 和dishs_controller 中的新/编辑操作中。像CarrierWave 这样的好插件可以极大地帮助整个文件上传过程。
【讨论】: