要访问Arel::SelectManager包括投影在内的结果,你可以使用to_sql
方法将SelectManager对象转换为SQL语句,并通过ActiveRecord的查询接口执行该SQL语句来获取结果。
以下是一个示例代码:
# 创建一个Arel::SelectManager对象
select_manager = Post.select(:id, :title).where(published: true)
# 将SelectManager对象转换为SQL语句
sql = select_manager.to_sql
# 执行SQL语句并获取结果
results = ActiveRecord::Base.connection.execute(sql)
# 打印结果
results.each do |row|
puts "ID: #{row['id']}, Title: #{row['title']}"
end
在上面的示例中,我们首先创建了一个Arel::SelectManager对象select_manager
,它选择了"id"和"title"两列,并且仅返回已发布的文章。然后,我们使用to_sql
方法将SelectManager对象转换为SQL语句,并将其存储在变量sql
中。
接下来,我们使用ActiveRecord::Base.connection.execute
方法执行SQL语句,并将结果存储在变量results
中。
最后,我们遍历结果集并打印每行的"id"和"title"字段的值。
请注意,execute
方法返回的结果是一个数组,其中每个元素都是一个哈希表,键是列的名称,值是列的值。你可以根据自己的需要进一步处理结果。