用于为选择限制1设置局部变量的Mysql2策略

时间:2013-07-16 01:35:07

标签: ruby mysql2

学习红宝石(或尝试。)

我正在使用Mysql2 gem来查询我知道只返回一条记录的数据(LIMIT 1.)但是,Mysql2返回一个Mysql2 :: Result,我必须迭代才能得到我的值:

client2.query("SELECT `Parent_ID`,`Path` FROM `Categories` WHERE (`ID` = 83) LIMIT 1").each do |row|
      local_var = row['Path']
    end

当然,local_var不在范围内,因此该方法不会将该变量设置为在该脚本的其余部分中在循环外部使用。

不应该这么难。 :)

  1. 有没有办法从Mysql2获得一个不涉及循环迭代的结果?
  2. 如果没有,我如何设置局部变量(或其他一些全局对象值)来存储结果?
  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

找到以下答案:

Ruby / MySQL fetching single row but still using .each?

无需循环。只需先调用Mysql2 :: Result

local_var = row.first['Path']

答案 1 :(得分:0)

您的问题是如何获取模型而不是模型数组?

模型

如果您需要名称:

Category.find(83).name
一系列模型

如果您需要每个人的名字:

# Find by the ID
Category.all.each do |result|
   result.name
end

# Find by one attribute
Category.find_all_by_cod(83).each do |result|
   result.name
end