Rails:任何预加载(包括)父关联的方法

时间:2011-02-18 23:56:36

标签: ruby-on-rails activerecord include scope preload

我有一个带有以下型号的Rails 2.3应用程序。

class Message << AR::Base
  has_many :message_copies
end


class MessageCopy << AR::Base
  belongs_to :message
end

每当我查询MessageCopy时,我总是需要引用父消息的属性。所以我总是最终预加载(通过:include =&gt;:消息)来减少数据库查询的数量。

到目前为止,我提出了这个问题:

named_scope :with_parent_msg, :include => :message

这让我可以轻松地做到这一点:

@user.message_copies.with_parent_msg

有更好的方法吗?所以我不必总是调用with_parent_msg?

对任何建议持开放态度。谢谢!

1 个答案:

答案 0 :(得分:3)

您可以为此

定义default_scope
class MessageCopy << AR::Base
  belongs_to :message
  default_scope include(:message)
end