2012-11-09 59 views
0

我有以下代碼:的ActiveRecord :: Base.connection.select_all - 哈希錯誤

<%@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

按文檔,ActiveRecord::Base::select_all返回哈希的數組,而不是模型的數組。我想你想寫一些類似Submission.all的東西,它會生成相同的SQL(綁定到DBASE_general數據庫中的表提交)。

如果由於某種原因不希望爲該表建立一個模型(也許您想要保存一些內存,或者表名不是事先已知的等),則必須將結果作爲哈希值對列名/值,所以你會使用類似:

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

然而,上述方法有很多缺陷的,所以你如果可以的話最好用的模型。

+1

OMG,非常感謝你的詳細解釋 – Kim

+0

不客氣:) – Anton