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返回一个哈希数组,而不是模型数组。我猜您想编写类似 Submission.all 的东西,它会生成相同的 SQL(将其绑定到 DBASE_general 数据库中的表提交)。

如果由于某种原因不希望有该表的模型(也许您想节省一些内存,或者事先不知道表名等),您必须将结果作为对 column_name / value 的哈希处理,所以你会使用类似的东西:

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

但是,上述方法有很多缺陷,所以如果可以的话,最好使用模型。

于 2012-11-09T17:40:42.927 回答