使用自定义foreign_key将数据库结果包括为对象

时间:2012-08-29 08:37:02

标签: ruby-on-rails ruby

我有一个论坛表,其中包含“last_post_id”列,该列指向论坛中的最后一篇帖子。如何在我的主论坛查询中包含它,以便最后一个主题是我可以访问的对象?

这不起作用,但它有助于传达我所追求的内容

  Forum.all(
    :include    => {:posts => {:foreign_key => "last_post_id"}},
    :order      => "ancestry ASC, display_order ASC", 
  )

我希望能够使用“forum.last_post.date”之类的内容访问最后一个帖子对象。这是可能的,最干净的解决方案是什么?

RAW sql看起来应该是这样的:

       SELECT forums.*, last_post.*
         FROM forums as forums
    LEFT JOIN posts  as last_post on last_post.id = forums.last_post_id
     ORDER BY ancestry asc, display_order asc

1 个答案:

答案 0 :(得分:1)

class Forum < ActiveRecord::Base
  has_many :posts
  has_one :last_post, :class_name => 'Post', :primary_key => :last_post_id
end

Forum.all(:include => [:last_post])