1

結合と競合する列名を使用してクエリを実行しています。いいえ:

results = TableA.joins(:table_b).select('table_a.id as table_a_id', 'table_b.id as table_b_id')

私の結果では、table_a_id と table_b_id は両方とも文字列です。それらを整数にするために何ができますか?

おそらくこれを返す方法がresults[0]['table_a']['id']ありresults[0]['table_b']['id']、両方が正しいデータ型を持っているように感じますが、その方法がわかりません。

私の主な関心事は、2 番目のクエリを実行せずに両方の列にアクセスできるようにすることです。

ありがとう!

4

3 に答える 3

0

わたしにはできる。私はこれをします :

comments = Comment.joins(:project).select('comments.id as table_a_id, projects.id as table_b_id')

そして、私はこれを行うことができます:

comments.first.table_a_id

列を整数に変換するには、SQL 関数を使用できます。整数に変換するには、sql または ruby​​ 関数を使用できます。

于 2012-07-21T01:16:13.577 に答える
0

Dougui の回答は両方の列へのアクセスをほぼ網羅しているため、文字列から整数への変換についてのみ説明します。SQL で変換するか、Ruby で変換するかの 2 つのオプションがあります。

Ruby では.to_i、文字列を呼び出して整数に変換できます。したがって、次のようになります。

> foo = '156'
=> '156'
> foo.to_i
=> 156

SQL では、次のようにCAST関数を使用します。

SELECT CAST('156' AS INTEGER);

 int4 
------
  156
(1 row)
于 2012-07-22T03:40:11.423 に答える