2012-11-09 52 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