Rails经常犯的错误一 - find(:first)
欢迎大家来这里坐坐, RubyOnRails话吧
( http://www.3user.com/group/index/12015 )
做个测试,建个表
CREATE TABLE user(
id INT NOT NULL AUTO_INCREMENT,
user_name varchar NOT NULL
)
test的fixtures
这么写
one:
id: 1
user_name: a
two:
id: 2
user_name: b
然后在user_test.rb中写一个测试方法如下:
def test_find
p User.find(:first,:conditions =>["id=?", 2]).id #正确的写法
p User.find(:first,["id=?", 2]).id #错误的写法
end
打印出来的结果
2 #正确的结果
1 #与预期不一样的结果
查看日志如下:
Nov 04 20:03:58 13cc97e4810e43f rails[3076]: [4;36;1mUser Load (0.000000)[0m [0;1mSELECT * FROM user WHERE (id=2) LIMIT 1[0m
Nov 04 20:03:58 13cc97e4810e43f rails[3076]: [4;36;1mUser Load (0.000000)[0m [0;1mSELECT * FROM user LIMIT 1[0m
错误已经很明显了,如果不写":conditions:=>",前面查询有:first,则会忽略后面写的条件.
我犯过几次这样的错误了,怎么看都查不出问题,程序也不报错。
特写此文,纪念一下曾经让我郁闷的code.
欢迎大家来这里坐坐, RubyOnRails话吧
( http://www.3user.com/topic/show/12462 )
- 浏览: 5490 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
三人行(3user.com)新版v1 ...
你好。看了3user.com 蛮不错的。就是页面有点乱,希望可以改进一下。。 ...
-- by jsifa -
Rails跨域session过期的 ...
thanks
-- by 茶道 -
ROR经常犯的错误三 - Arr ...
如果你在java中也一样。。。。
-- by 抛出异常的爱 -
ror应用存在二级域的,相 ...
这个问题在博客园也有人提过,好像是IE认为子域与主域的资源不是相同的(实际上大多 ...
-- by crazysoul -
ror应用存在二级域的,相 ...
有些是要区分对待的,那只要在lighttpd.conf多加一些配置就行了!
-- by s00n






评论排行榜