小编nic*_*rim的帖子

为什么Rails 3与Mysql2 Gem ActiveRecord :: Base.connection.execute(sql)返回数组而不是哈希?

我正在将应用程序升级到Rails 3.我决定使用mysql2 gem.应用程序中有一些遗留代码可以调用:

results = ActiveRecord::Base.connection.execute(sql)
Run Code Online (Sandbox Code Playgroud)

在2.3.x版本中,它使用了

results.each_hash do |row|
...
Run Code Online (Sandbox Code Playgroud)

但是使用gem mysql2,结果是类型Mysql2::Result,它只有一个each方法.检查文档并指定结果应该是键入字段名称的哈希值.大!

但事实上,它是一个Array,而不是一个Hash.

当我使用rails控制台并实例化我自己的Mysql2::Client并在那里运行查询时,结果一个Hash,这就是我想要的.

在rails应用程序中,我认为最好使用ActiveRecord::Base.connection它,因为它已经使用database.yml中的选项进行了实例化.

注意,遗憾的是结果没有映射到模型,所以我不能使用它.

我现在所做的是,例如:

result = ActiveRecord::Base.connection.execute(sql)
field_index = result.fields.index("field")
result.each do |row|
  row[field_index]
end
Run Code Online (Sandbox Code Playgroud)

哪个是罪恶的丑陋.

有没有人如何让它返回哈希而不是数组?

gem mysql2 ruby-on-rails-3

12
推荐指数
3
解决办法
1万
查看次数

git问题 - 与分支分离

我无意中脱离了我的申请分支:

目前不在任何分支机构.无需提交(工作目录清理)

我怎么能回到分店?

git

8
推荐指数
1
解决办法
1万
查看次数

回到先前的提交而不破坏当前的提交

所以我想回到我之前的提交,而不会破坏我现在拥有的最新版本.我该怎么做呢?做一个git reset HARD会破坏我当前的提交权吗?

git

6
推荐指数
1
解决办法
1万
查看次数

在Android中,强制停止和杀死进程有什么区别

在 Android Studio 中,我可以终止一个进程。我也可以使用该kill命令终止进程。所以我想知道以下方法的确切含义是什么:

  1. 通过 Android Studio 终止前台应用程序
  2. 通过 Android Studio 终止后台应用程序
  3. 从最近的应用列表中删除应用
  4. 通过设置强制停止应用程序
  5. 通过kill命令杀死进程

以及如何编写一个健壮的应用程序,以确保应用程序在被用户或系统杀死时不会出现任何崩溃问题。谢谢。

android android-lifecycle android-studio

5
推荐指数
1
解决办法
4134
查看次数

将值映射到色标

我有一个值列表,应该绘制到具有特定颜色的地图.绘制地图已经完成,但我需要找出一种方法将值映射n到表示其值的颜色.

到目前为止,一个示例和我的解决方案是基于min和标准化值max,然后将它们分配给0最低和255最高的十六进制颜色.这当然限制了我自己的灰度.这是代码:

$color = ($value / $max) * 255    // (min is zero)
Run Code Online (Sandbox Code Playgroud)

但是,如果值应该从蓝色变为红色,如何做到这一点?是否有任何可以解决此问题的通用库或工具?到目前为止,我还没能找到任何一个.

php colors

5
推荐指数
1
解决办法
4766
查看次数

使用文件名中包含多个连续空格的文件

在我的代码的某些部分,我检查文件是否存在然后打开它.

一名员工遇到包含多个空格字符的文件名问题.

我查了一下,这是真的.这是我的代码片段:

string filePath = Path.Combine(helper.MillTestReportPath, fileName);

// Ouverture du fichier
if (File.Exists(filePath))
{
    Process.Start(filePath);
}
else
{
    MessageBox.Show("Le fichier n'existe pas!", "Fichier introuvable", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Run Code Online (Sandbox Code Playgroud)

几乎每个文件都可以找到所有内容但是当一个文件(例如"SPAM CERTS SO 94318099 PO 10610.msg")包含多个空格时,我会使用File.Exists得到错误,即使我直接尝试运行Process.Start它失败...

关于我如何解决这个问题的任何想法?

非常感谢!

.net c#

0
推荐指数
1
解决办法
716
查看次数