1

私は次のコードを持っています:

<%@submission_general = ActiveRecord::Base.connection.select_all('SELECT * FROM DBASE_general.submission')%>

<%=  @submission_general.count%> -- gives 11,000 entries

<%=  @submission_general[1].sub_id%> -- gives undefined method `sub_id' for #<Hash:0xb4a01108>

どこが間違っているのですか?

あなたの助けをどうもありがとう

4

1 に答える 1

5

ドキュメントによると、ActiveRecord :: Base :: select_allは、モデルの配列ではなく、ハッシュの配列を返します。同じSQLを生成するSubmission.allのようなものを書きたいと思います(DBASE_generalデータベースのテーブル送信にバインドされています)。

何らかの理由でそのテーブルのモデルを作成することが望ましくない場合(メモリを節約したい場合や、テーブル名が事前にわからない場合など)、結果を列名/値のペアのハッシュとしてアドレス指定する必要があります。 、したがって、次のようなものを使用します。

@submission_general = ActiveRecord::Base.connection.select_all('SELECT * FROM DBASE_general.submission')
@submission_general[1]["sub_id"]

ただし、上記のアプローチには多くの欠陥があるため、可能であればモデルを使用することをお勧めします。

于 2012-11-09T17:40:42.927 に答える