2011-02-18 39 views
3

我有一个Rails 2.3应用程序与以下模型。Rails:任何方式预加载(包括)父协会

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


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

每当我查询MessageCopy,我总是需要引用父消息的属性。所以我总是会预加载(通过:include =>:message)来减少db查询的数量。

到目前为止,我想出了这一点:

named_scope :with_parent_msg, :include => :message 

这让我很容易地做到这一点:

@user.message_copies.with_parent_msg 

有没有更好的方式来做到这一点?所以我不必一直使用_parent_msg调用?

欢迎任何建议。谢谢!

回答

3

您可以定义一个default_scope这个

class MessageCopy << AR::Base 
    belongs_to :message 
    default_scope include(:message) 
end 
+1

我假设的语法在某个时刻改变,但此为Rails 5.x的正确的语法:** default_scope {包括(:消息)} * * – 2016-09-28 18:31:29