即使我不更新该属性,为什么rails会更新我的carrierwave图像

时间:2014-06-19 22:12:32

标签: ruby-on-rails carrierwave

我使用carrierwave_direct将文件上传到S3。我有一个照片模型,其中包含由carrierwave安装的图像属性,还有一些其他属性,如副本。在我的应用程序中,可以上传照片,然后更新这些其他属性。我不明白的是为什么rails更新图像属性,即使它没有更新。例如,请参阅下面的日志,其中我只更新了副本属性(参见参考号)。但是,在DB rails的更新中也会更新image列。

Started PATCH "/photos/1275" for 192.168.2.100 at 2014-06-20 00:53:51 +0300
Processing by PhotosController#update as JS
  Parameters: {"utf8"=>"✓", "photo"=>{"copies"=>"2"}, "photo_id"=>"1275"}
  Photo Load (0.1ms)  SELECT "photos".* FROM "photos" WHERE "photos"."id" = ? LIMIT 1 [["id", "1275"]]
   (0.1ms)  begin transaction
  Photo Load (0.2ms)  SELECT "photos".* FROM "photos" WHERE "photos"."id" = ? LIMIT 1  [["id", 1275]]
  SQL (0.7ms)  UPDATE "photos" SET "copies" = ?, "image" = ?, "updated_at" = ? WHERE "photos"."id" = 1275  [["copies", 2], ["image", "593c9f04-b5b1-4150-ae76-74eed8b0d3ea/foto%201.JPG"], ["updated_at", Fri, 20 Jun 2014 00:53:51 EEST +03:00]]

在我的情况下,这会给我带来麻烦,因为可能存在这样的情况:最初图像在数据库中保存为'/ photo 1.jpg'(不是url编码),并且在更新另一个属性后,它将更改为' /photo%201.jpg'(网址编码)。

我尝试通过执行类似下面的操作来阻止此行为,但这似乎不起作用。

before_update do
  self.key = URI.decode(key)
end

我很感激为何会发生这种情况及/或如何解决这个问题。

谢谢!

0 个答案:

没有答案