0

これが私のコードです:

<%= DimensionVersion.where(:dimension_id => 1).select("name") %>

:dimension_id => 1 である次元バージョン名のリストを取得することを期待しています。データベースには 4 つあります。

代わりに私はこれを得る:

#<ActiveRecord::Relation:0x3d351c8>

編集:

私はこれで私が望んでいたものを返す方法を考え出しました:

<%= DimensionVersion.select("name").where(:dimension_id => 1).all %>

どちらが返されますか:

[#<DimensionVersion name: "Default">, #<DimensionVersion name: "Test1">, #<DimensionVersion name: "Test2">, #<DimensionVersion name: "Test3">]

ただし、 で返してほしくありません#<DimensionVersion Name: ... >。先頭のタグから削除しようとし=ましたが、何も返されませんでした。

4

3 に答える 3

2
DimensionVersion.where(:dimension_id => 1).select("name")

摘み取り法が必要だと思います。

上記を次のように書き換えます。

DimensionVersion.where(:dimension_id => 1).pluck(:name)

同様に、collect のようなより高いレベルの構造でさえ、次のように使用できます。

DimensionVersion.where(:dimension_id => 1).collect(&:name)

お役に立てれば。

于 2013-02-03T12:57:17.880 に答える
1

AR が返さRelationれるので、条件などをチェーンできます。実際の結果が必要な場合は#all、 , #first, #each,... を呼び出します。

DimensionVersion.where(:dimension_id => 1).select("name").all

Rails でクエリを実行するのは非常に面倒なので、フレームワーク全体を放棄して php に戻ろうとしています。

ガイドを読むことをお勧めします: Active Record Query Interface

于 2013-02-03T12:52:18.580 に答える
0

次のような collect メソッドを使用して、列名を取り除くことができました。

DimensionVersion.select("name").where(:dimension_id => 1).all.collect { |d| [d.name]}
于 2013-02-03T13:05:50.743 に答える