我需要以这个页面独有的方式从我的数据库中提取聚合列,跨越多个模型,并且在已经存在性能问题的页面上聚合内存的成本很高。因此,我想对数据库进行手写SQL查询并返回一堆简单对象(如哈希或结构),然后我可以将这些对象发送到使用此信息的现有对象。 ActiveRecord::Base.connection.select_all
非常适合我的想法。
我的SQL字符串采用了一系列ID:
WHERE entry.task_id IN (#{@project.tasks.id})
但这不起作用,因为它返回一个包装数组,而connection.quote由于某种原因返回项目符号列表。什么是获得我想要的信息的最佳方式?我应该手动剥离[
和]
吗?有没有像sanitize_sql_array
那样方便易用的功能?我是不是应该将select_all称为正常操作的一部分?
过去这似乎更容易,但我使用的大多数方法都受到保护(包括sanitize_sql_array
)。 Rails 真的希望我使用ActiveRecord查询方法,似乎。
答案 0 :(得分:1)
加入并使数组成为一个字符串,然后将其传递给SQL:
ids_string = ids.join(', ')