使用任意 SQL 语句从查询中填充数组
@myarray = myObject.find_by_sql(sql)
SQL 的设计方式是,每个myarray
项目都具有与模型相同的字段myObject
,例如
\#{myObject value: 100, day: 2013-06-15}
理想情况下,我想拥有 myObjects 数组
- 填充来自 Array 的数据;
- 可用于 html;
- 未保存到数据库中。
有可能吗?
使用任意 SQL 语句从查询中填充数组
@myarray = myObject.find_by_sql(sql)
SQL 的设计方式是,每个myarray
项目都具有与模型相同的字段myObject
,例如
\#{myObject value: 100, day: 2013-06-15}
理想情况下,我想拥有 myObjects 数组
有可能吗?
来自文档ActiveRecord::Querying#find_by_sql
:
对您的数据库执行自定义 SQL 查询并返回所有结果。结果将作为数组返回,请求的列封装为您从中调用此方法的模型的属性。如果您调用 Product.find_by_sql,则结果将在 Product 对象中返回,该对象具有您在 SQL 查询中指定的属性。
所以我不太明白你的问题。AR 将尝试将从查询返回的字段映射到对象字段。
如果将其分配给对象变量,则可以在视图中访问它。
除非您执行执行保存的方法之一,否则记录永远不会保存。
编辑:
请记住,除非您返回 id 列,否则 AR 将无法将结果集映射到记录。