1

Ruby を学ぶ (または試してみる)

Mysql2 gem を使用して、1 つのレコード (制限 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. そうでない場合、ローカル変数 (または他のグローバル オブジェクト値) を設定して結果を保存するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

次の答えが見つかりました:

Ruby/MySQLは単一の行をフェッチしていますが、まだ.eachを使用していますか?

ループは必要ありません。最初に Mysql2::Result を呼び出すだけです

local_var = row.first['Path']
于 2013-07-16T02:39:46.673 に答える
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
于 2013-07-16T14:32:42.437 に答える