需要sql返回一个对象数组而不是哈希数组

时间:2014-06-25 21:16:10

标签: ruby-on-rails activerecord ruby-on-rails-4

出于某种原因,当我需要一个对象数组时,我的查询现在返回一个哈希数组。 我无法弄清楚要做什么。

inbox_sql = self.mailbox.inbox.where('conversations.id IN (?)', active_conversations).reorder('').to_sql
sentbox_sql = self.mailbox.sentbox.reorder('').to_sql

sql = "#{inbox_sql} UNION #{sentbox_sql}"
conversations = Profile.connection.execute(sql)

self.inbox.mailbox.first.class

返回

Conversation(id: integer, subject: string, created_at: datetime, updated_at: datetime)

但是

ActiveRecord::Base.connection.execute(sql).first.class

返回哈希,这是有问题的,并破坏了我在视图中的其余代码。 [用于以不太理想的方式返回Conversation对象],但是我需要它来返回一个Conversation(..)对象

1 个答案:

答案 0 :(得分:1)

在rails中你不执行任何东西,你使用rails ActiveRecord 函数。

在此处阅读:http://guides.rubyonrails.org/active_record_querying.html

例如:

Conversation.where(...)

将执行sql查询并返回对话实例