在Rails中更改数据库而不必重置整个事物

时间:2013-07-02 04:59:05

标签: ruby-on-rails database image lightbox colorbox

我是Rails和编码的新手,所以这可能是一个非常基本的问题......

今晚,我正在开发一款应用并更改了图片上传器,以便将两种不同尺寸的图片保存到数据库中 - 一种较小,可在页面上显示,一种较大的版本可在灯箱中使用(彩盒)。

我遇到的问题是用户已经在开发和生产中都存在于数据库中。幸运的是,我使用Faker gem创建了这些用户,在生产中我只是发布了一些内容来查看它在生产中的外观。

因此,对于已经存在于数据库中的图像,它们仅保存为较小的版本,从而使得灯箱显示损坏的图像(因为较大的版本不存在)。

因为我可以这样做而不会丢失任何重要的东西,我重置数据库并在开发中我再次运行Faker rake,在生产中我刚刚签名备份并重新上传了我自己的一些照片。 (我非常肯定这不是最佳实践......但我真的只是进入第二个月的学习......)

我的问题是:有没有办法重做数据库,以便原来在那里的那些图像可以保留,并且只是将两个版本重新保存到数据库中。

或者,有没有办法只需要保存一个版本的图像,灯箱/颜色框可以操作原始尺寸的图像以我想要的尺寸渲染? 例如,可能是当用户上传图像时,图像以较大的版本保存到数据库中,然后对于“缩略图”我对其进行编码,以便它将照片缩小到我想要显示的大小。页面??

供参考,以下是该应用程序的Heroku部署的链接:

http://desolate-waters-6166.herokuapp.com/

我正在使用这个应用程序作为我自己的示例应用程序,用于尝试不同的事情,并学习如何在没有太多后果的情况下做事。

提前致谢!如果我需要提供更多信息,请告诉我。我也可以链接这个应用程序的github存储库。

2 个答案:

答案 0 :(得分:0)

很好,该网站看起来很酷。为了回答你的问题,我没有一个简单的方法,也不值得完成所有用户的图像并试图将它们转换成高质量的任务。我认为最好的选择是为高分辨率缩略图添加一列,并确保缩略图保存为高分辨率。我相信,回答你的第二个问题,如果你存储一个高质量的图像,然后缩小它不会影响质量,只有超出分辨率的大小,如果这是有道理的。因此,可能会弃用存储低质量图像,并将其存储在高位。

答案 1 :(得分:0)

我建议你看看carrierwave gem。它使用ImageMagick进行图像大小调整,并将图像位置存储在数据库中(而不是图像本身)。这样,您就可以将图像文件存储在更便宜的免费位置,例如亚马逊S3。另一个优点是尺寸版本,非常流畅。