Как соединить результат ActiveRecord с результатом select_all по столбцу? - PullRequest
0 голосов
/ 29 февраля 2012
class Author
  has_many :post
end

class Post
  belong_to :author
  has_many :content
end

class Content
  belong_to :post 
  (column: section)
end



c = Content.select("post_id").where("section like ?", 'foo%')
p =  ActiveRecord::Base.connection.select_all(Post.select("title, post_id ").joins(:author).where(:id => c.map(&:post_id)).to_sql)

как объединить c и p, чтобы стать табличной структурой по столбцу post_id?

как в SQL:

  select * from c,p where c.post_id = q.post_id ; 

Большое спасибо.

1 Ответ

0 голосов
/ 29 февраля 2012

Этот код

@posts = Content.find(:all, :include => :post)

будет генерировать SQL по вашему желанию.Вы можете получить доступ к отдельному контенту для каждого сообщения в цикле each или сгенерировать плоскую таблицу, такую ​​как DB возвращает, выполнив что-то вроде этого:

@posts = Content.find(:all, :include => :post).map{|c| c.merge(c.post)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...