Mysql2响应不与工作方法在Ruby中收集

我用我的Ruby脚本mysql2。 使用这种测试对MySQL数据库API响应

这是我的脚本片段

test_job_by_id_5 id = $data["jobs"]["id"][i] # example 5 job = JobServices.job_by_id(id) response = @@con.query("select * from jobs where id = #{id}") #select * from jobs where id =5 rs=response.collect #this fails assert_match(job[0]['title'],rs[0]['title'],"The title values are equal for #{$data["jobs"]["id"][i]}") end

所以,当我用这个用ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10]它就像一个魅力

但是当我使用ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]它不工作我得到这个错误

NoMethodError: undefined method '[]' for #<Enumerator: #<Mysql2::Result:0x00000012d19f18>:collect>

可有人请帮我解决这个问题?

--------------解决方案-------------

当调用collect在一个Enumerable (这Mysql2::Result是),你会得到一个Enumerator实例回来。 Enumerator ■不要执行数组访问运算符,所以你不能说enumerator[0]并得到任何有用的发生; 然而, Enumerator不包括Enumerable这样他们就响应first所以你可能想这样做:

rs = response.collect
row = rs.first
assert_match(job[0]['title'], row['title'], "The title values are equal for #{$data["jobs"]["id"][i]}")

或者只是跳过Enumerator完全,并呼吁firstresponse

row = response.first
assert_match(job[0]['title'], row['title'], "The title values are equal for #{$data["jobs"]["id"][i]}")

甚至是这样的:

row = @@con.query("select * from jobs where id = #{id}").first
assert_match(job[0]['title'], row['title'], "The title values are equal for #{$data["jobs"]["id"][i]}")

请记住, row.nil?会是真实的,如果你的查询没有找到任何东西,所以你可能要考虑到这一点,如果你不想要一个例外。

分类:MySQL的 时间:2012-01-01 人气:0
分享到:

相关文章

  • MySQL数据库收集后更改值 2014-06-17

    我现在从一个MySQL表收集数据,然后使用curl发布的数据. 这些值是: title : surname : email Max Test max@test.com 我如何收集然后将数据改变费尔德名字帖子: MainTitle : Lastname : MainEmail Max Test max@test.com 这是我当前的代码: $conn = mysql_connect("localhost","max","pass"); $db =

  • 红宝石/ MySQL的mysql_adapter.rb:505:在“real_connect”:不能将字符串转换为整数 2014-06-03

    我是在今天早上,激发了我的应用程序以同样的方式像往常一样,并开始收到此错误. 自那时以来,我一直沿着每一条道路,我可以设想 - 以删除并重新安装每一块红宝石/导轨软件我的机器上,包括MySQL的地步. 我已经剥夺我申请下来只以下. require 'rubygems' require 'active_record' class Job < ActiveRecord::Base end ActiveRecord::Base.establish_connection( :adapter => &q

  • 的Ruby / Rails - 既红宝石mysql和mysql2工作 2014-11-12

    我在迁移非常大的Rails应用程序2.3从红宝石1.8〜1.9. 一路上,我一直有这样的,似乎只能通过从旧的移动解决一些数据库的编码问题ruby-mysql宝石mysql2 . 这工作得很好所有ActiveRecord::Base ORM类的查询( @users = User.find(:all, :conditions => {...})等等),但是应用程序也很大程度上依赖于查询DB直接一些性能相关的问题. 这是相当普遍地看到这样的东西: ActiveRecord::Base.connecti

  • 可能写在红宝石MySQL存储过程? 2014-12-20

    我听说一个PostgreSQL里可以写存储在红宝石(也蟒/的Java / C ++)的程序. 在MySQL中这可能吗? 因为我不想学习自己的语言吧. 谢谢 --------------解决方案------------- 不,你不能. 只要你的(虚拟)系统上安装PostgreSQL和安装PL /红宝石以及:http://moulon.inra.fr/ruby/plruby.html 设置使用Ubuntu PostgreSQL的(在VMware或虚拟框)的虚拟机,只需要几分钟的时间:https://

  • 插入到红宝石MySQL表 2012-05-03

    我有一张桌子和一个电话本程序,我从用户获取信息并插入到表中,但由于我使用的用户信息的两个变量的第一,第二,我不能将它们插入到表中. 我的代码如下: def inserting first = gets second = gets @connect.query('INSERT INTO person VALUES(first,second)') end 请帮我解决这个问题. --------------解决方案------------- 如果您使用Rails的,你应该使用ActiveRecord.

  • MySQL的; 收集的真实记录 2013-01-08

    我怎么也学习在mysql中的记录数? ID fname lname 1 abc qwe 3 asd asd 4 dfsf dfs 5 asd asd 8 dfsf dfs Total Member (Total ID): 5 我能怎么做? 谢谢 ( 我坏工程道歉) --------------解决方案------------- 要获得一个表使用的行数COUNT : SELECT COUNT(*) AS rowcount FROM yourtable 查看计数行手册页. 注意,这需要,如果你正使用

  • 雪豹“无法创建数据库”错误红宝石MySQL的宝石 2013-02-01

    环境: 的Mac OS X 10.6.4 $ ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] $ rails -v Rails 2.3.9 $ mysql --version mysql Ver 14.14 Distrib 5.1.51, for apple-darwin10.3.0 (i386) using readline 5.1 $ gem environment RubyGems Environm

  • 使用Javascript / CSS / PHP / MySQL的收集在一个div用户的电子邮件地址的网站上 2013-12-18

    假设你想在你的网站一个盒子,上面写着"给我们您的电子邮件地址,我们会向您发送消息"或诸如此类. 什么是简单的/优雅的方式来收集这些电子邮件地址(假设一个标准的LAMP堆栈)? 特别是,我想对建议 JavaScript来处理用户界面(抱怨,如果无效的电子邮件地址,表示衷心的感谢,当他们按下回车键,等等). CSS来使它看起来体面. PHP的实际收集邮件地址,并将它们存储(无论是平面文件或数据库是罚款). 或者,如果有一个奇特的轨道或AJAX的方式做到这一点,我到很开放了. (我所知道的现

  • 红宝石/ MySQL的:查询返回只有一个用户,而不是许多用户 2014-05-11

    我有引号一个表从坐商(价格,评论,日期雇主接受了这个报价,...)存储报价,并与另一评级表(正/是负面的,评论,日期评级已经提交,... )每个商人的. 所以,一个商人可以有0..n的报价和0..n的评级. 我想搞清楚: 多少收视率时,他的报价是由雇主所接受并在商人了? 我目前的做法: 第一次查询('行情')是找出quoters的用户ID,并在此期限雇主接受了报价. 第二查询('收视率')是一个块中. 对于每一个商人ID,查询应该获取该相等或simililar报价已经被接受之日起的评级. 问题:

  • MySQL查询的大小限制红宝石/ MySQL的 2014-08-15

    我希望这是适当的地方要问我的问题. 我的MySQL查询目前看起来是这样的 @records = Record.find(:all, :select => "`records`.id, records.level as level, (SELECT (count( b.id ) + 1) FROM records as a, records as b WHERE a.id = records.id and b.skill > a.skill and b.created_at ='#{v

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.392 (s). 10 q(s)