一直以来我的网站存在着一个令人很崩溃的问题。就是用户上传的图片会丢失。而且是连带相册一起丢失。开始还以为是什么地方误删了,冲突了。查了很久很久无果。关键是这个BUG并不是一定出现。而且,我测试时就从来没碰到过。
昨天一个用户刚注册,开始上传图片。我就密切注意。过了一会儿,果不然,相册丢失了。很纳闷。打开production.log看了N久。没发现异常啊。注:里面我没加sql的log。太多了。
但是这个问题很郁闷,而且已经郁闷很长一段时间了。这个用户还好。又继续新建相册,传照片。一会儿。又没了。这就郁闷了。我就不得不重新开了sql的log。果不然,确实有album destroy的记录。很奇怪。
于是我备份了该用户消失的相册。(手快)自己回复数据来做测试。(因为我上传从来不出现。RP啊RP)
通过看sql的log。和每个页面调用。(tail 就是好用啊)终于发现了居然是载入用户首页的时候相册被删除的。太奇怪了。怎么会这样。打开controller。里面有一句:
@photos = @lovetree.show_photos(current_user)
那肯定是该句的问题。遂打开Lovetree模型。找到show_photos。才恍然大悟!
由于用户主页回去把用户设了访问权限的相册移开。我用的方法是先找到所有属于该用户的相册。然后:
albums.each{|a| albums.delete(a) unless a.authorize(user)}
本来意思是如果用户设了权限,就把该相册从albums数组中删除掉。最后留下的就显示。结果造成了并不是数组中去删除相册,而是直接把该相册也删除了。
万恶的delete啊。最后改成albums - [a]就对了。
太痛苦的经历了。告诫大家一下!慎用数组delete。
分享到:
- 2009-01-09 00:16
- 浏览 1580
- 评论(8)
- 论坛回复 / 浏览 (8 / 4682)
- 查看更多
相关推荐
【万恶之源2011VIP内部135】是一个特定版本的网络安全工具,由“万恶之源网安基地”站长开发。这个工具的名称中提到的“135抓鸡”,实际上指的是在网络安全领域中寻找并控制易受攻击的服务器或计算机的行为,这些...
这篇"万恶的Blogbus教程免费版"很可能是针对初学者或者那些希望深入理解Blogbus平台特性的用户设计的。从提供的文件列表来看,我们有以下三个文件: 1. **下载说明.txt** - 这个文件可能包含了下载教程的具体步骤,...
很抱歉,但根据您提供的信息,标题"万恶的反对风格如果我"和描述"斯蒂芬告诉对方告诉对方告诉对方告诉对方的方式告诉对方公司法"似乎与IT知识不直接相关,同时也无法明确地指向任何特定的技术主题。标签"法大赛官方...
万恶的斐波那契.exe
万恶之源:伟大的迅雷!
"android去万恶的广告补丁"是一个针对这一问题的解决方案,旨在帮助用户去除应用程序中的广告,提升使用舒适度。这个补丁由开发者首次发布,表达了他们希望通过提供这种服务来获得用户的支持,并承诺未来会有更多...
前端内存泄漏及解决方案详解 在前端开发中,内存泄漏是一个非常重要的主题。内存泄漏是指系统进程不再使用的内存没有及时释放,导致内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。在本文中,我们将讨论...
全国大学生电子设计竞赛(National Undergraduate Electronics Design Contest),试题,解决方案及源码。计划或参加电赛的同学可以用来学习提升和参考。程序均是实战案例,经过测试可直接运行。...
凯撒加密,又称为移位密码,是一种古老且基础的加密技术,源于古罗马时期的军事通信,用以保护敏感信息不被敌人截获。它的基本原理是将明文中的每个字母按照固定的距离在字母表上向前或向后移动,以此达到加密的效果...
在音乐的世界里,符号是传达旋律、节奏和情感的关键元素。音乐符号的种类繁多,它们各有特定的含义,能够指示演奏者如何演绎乐曲。在这个故事中,超帆正面临一个挑战,他需要理解森森哼唱的一段曲子所包含的信息。...
**集团在进行人力资源信息化建设的过程中,旨在通过先进的技术手段提升人力资源管理效率,强化集团的管控能力和决策支持。项目的核心目标是构建一个集平台化、开放性、集成性于一体的人力资源管理系统(E-HR),以...
玩儿玩儿万恶人恶趣味而且维尔萨芬撒大幅撒大幅
### C#小技巧详解 #### 一、颜色值转换技巧 在C#中,颜色值的处理是非常常见的需求之一,特别是在进行UI设计时。这里介绍一个实用的小技巧:如何将`System.Drawing.Color`结构体的颜色值转换为16进制字符串,并反...
《万恶迷糊尤物》第三技:笑看混战人1000字 本篇小说主要讲述了格湘和殷澈之间的故事,并揭示了格湘的真实身份。故事开头,格湘和殷澈之间发生了一些有趣的互动,殷澈表现出对格湘的保护和照顾。然而,安洁却指控格...
【标题】:“万恶的Appuse-----Appuse2.X在MyEclipse之中的部署问题” 在探讨Appfuse 2.x在MyEclipse中的部署问题前,我们先来了解下Appfuse和MyEclipse这两个关键概念。 Appfuse是一个开源项目,它提供了一种快速...
文件中是远程调试用到的文件,调试方法如下: 1. 拷贝《vs2003远程调试文件》文件夹到目标机器任意位置 2. 运行StartMsvcmon.bat批处理 3. 保证需要调试的进程已经启动,同时在执行文件下有相应的pdb文件 ...
然而,如果配置过于通用,可能会带来问题,因为每个项目都有其特定的需求,过度模板化的配置可能会限制项目的灵活性,这可能是为什么描述中称其为“万恶之源”。 文件名为"meow",在上下文中可能表示这个压缩包里...
因为工作中有人喜欢在,前面加空格,还有人喜欢吧tab搞得到处都是,所以写了一个这个文件,用来删除行尾的tab与奇怪的空格
文件中是远程调试用到的文件,调试方法如下: 1. 拷贝《vs2003远程调试文件》文件夹到目标机器任意位置 2. 运行StartMsvcmon.bat批处理 3. 保证需要调试的进程已经启动,同时在执行文件下有相应的pdb文件 ...
在Windows平台上,C++共享内存是一种高效的进程间通信(IPC, Inter-Process Communication)方法,允许不同的进程访问同一块内存区域。本项目提供了一个已经封装为C++类的实现,使得服务端可以写入数据,而客户端则...