我想知道Rails中以下最佳设计是什么样的:
一个有三个不同图片库的网站,让我们说一个在mywebsite.com/gallery
下显示该公司员工的照片,另一个在mywebsite.com/productA
显示产品A的照片和第三个显示产品B在mywebsite.com/productB
下。
我认为创建一个图库资源以及productA和productB资源是不好的设计,因为每个资源只有一个,它实际上是新照片,而不是新的图像集合要被创造。
所以我在想,创建图像资源然后使用单表继承,实例化gallery_images,productA_images和productB_images并将路径更改为我想要显示的相应路径是个好主意作为网址。我应该提一下,我不想混淆不同部分的图像。
我觉得必须有一个"正确的"这样做的方式,我猜很多网站都使用类似的方案。
答案 0 :(得分:0)
不是说这是一个“Rails方式”,但我已经看到它在我访问过的大多数Rails项目中完成如下操作。基本上,当涉及到画廊时,您可能希望让客户上传和管理图像。因此,您可以使用gems和paperclip等carrierwave。一旦您选择了其中一个宝石,您的类设计就是预定义的。你有一个有附件的模型。
然后,您只需初始化模型的特定实例(或具有 has-many 附件模型关联的模型),并简单地在HTML模板中呈现图像URL列表。然后使用CSS和JS对实际的图库进行样式设置并在前端生效。
至于其他情境之间的区别。我们说OOP。如果您正在寻找在OOP环境中执行此操作的“正确”方法,则首先必须考虑您的业务领域。并设计您的课程,以便它们反映您的业务需求(考虑所有OOP原则)。开始这个旅程的最佳方式可能是学习和理解OOP原则,忘记“ Circle扩展Shape,Rectangle扩展Shape,这就是OOP!”的心态。如果你遵循OOP原则,设计模式实际上是你最终得到的一个很好的例子。 Head First DP是一本很好的入门书。