Fra*_*ues 7 sql sqlite activerecord database-connection ruby-on-rails
如何运行原始sql查询并获取ActiveRecord_Relation实例返回?
在sqlite3 db和Rails 4.2上,ActiveRecords::Base.exec_query(sql)返回一个ActiveRecord_Result实例。ActiveRecords::Base.execute(sql)返回一个数组。这很麻烦,因为我无法在返回的对象上运行后续的“ ActiveRecord查询”或原始sql查询。
更一般而言,我想知道如何在Rails中链接“复杂”的SQL查询。复杂地说,我无法通过ActiveRecords提供的“ ORM方法”找到解决方法。通过链接,我的意思是出于性能原因,我想在几个SQL查询中对其进行分解。示例:我只想先运行一次繁重的SQL查询,然后存储结果,然后根据用户行为运行较轻的sql查询。
我目前正在尝试通过使用服务器端处理实现的dataTables优化数据库可视化。每次用户与表进行交互时,服务器都必须运行不必要的复杂SQL查询,因为我无法在更简单的查询中对其进行分解。我查看了以下问题,但找不到令人满意的解决方案:
use*_*467 16
这是一种从 raw_sql 获取 ActiveRecord_Relation 的方法。
如果您确实有一个与您尝试检索的字段匹配的模型,则效果最佳,但正如您在 test_attribute 中看到的那样,任何数据都将被加载。
# Just an example query, any query should be ok
query = <<-SQL
SELECT *, TRUE AS test_attribute
FROM users
WHERE sign_in_count < 10
SQL
relation = User.select('*').from("(#{query}) AS users")
relation.class
# User::ActiveRecord_Relation
relation.first.test_attribute
# true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |