我不想复制图片,如果它是相同的,
比如:
user1发布一张图片
user2发布相同的图像
数据库中的2#图像
有办法处理吗??
谢谢,
发布于 2009-10-27 21:46:45
要做到这一点,您需要将附件分解到它们自己的模型中。
所以你现在很有可能
class User < ActiveRecord::Base
has_attached_file :avatar #plus a bunch of specifications here
end 您将设置一个新的模型和关联,如
class User < ActiveRecord::Base
belongs_to :images
end
class Image < ActiveRecord::Base
has_many :users
has_attached_file :avatar
end 然后在你的控制器里,你需要
Image.find_or_create_by_avatar_file_name(#filename here)因此,现在您有了一个user.image_id属性,并且可以有一个与多个用户关联的上传图像。
然而,我已经建立了一些相当大的系统,用户照片上传(徽章照片,头像照片,有趣的照片,任何其他)和用户之间的实际重叠往往很小。此外,您实际上只是在节省资源中最便宜的资源:存储空间。在带宽成本、处理或编程复杂性方面,您不会通过这条路线节省任何费用。
除非这是一个非常独特的环境(在这种情况下,听到你在做什么是很好的),否则我建议不要走这条路。
发布于 2009-10-27 21:45:37
http://www.codeproject.com/Messages/2913691/Comparing-one-image-to-many-others-speeded-up.aspx
我在我的程序中使用它,一切都很好!
DB相关建议:在表中存储散列。然后你只需要一次哈希运算。
关于速度
1)例如限制图像大小100x100
2)当用户尝试登录时,计算出密码的哈希值。我认为用户会更频繁地登录,而不是更新他们的化身。
发布于 2009-10-27 21:42:15
在保存每个图像时,计算它的散列。当一个新用户发布相同的图像时,检查该图像的散列,看看它是否与数据库中的任何内容匹配。
https://stackoverflow.com/questions/1633820
复制相似问题