2009-05-23 33 views
1

首先讓我來展示一些代碼。如何獲得一個急切的加載條件,以後用ActiveRecord和Rails進行延遲加載

class User 
    has_and_belongs_to_many :roles 
    named_scope :employees, { :conditions => ["roles.name = 'Employee'"], :include => :roles } 
end 

好的,所以後來在一個控制器中,我想搜索所有員工。我設置了命名範圍,以便通過聯接和條件搜索來實現這一點。但問題是我想要顯示所有用戶角色,但它只會顯示員工角色。

有沒有反正我可以說「user.roles」,並且在我已經急於加載之後在視圖中加載了懶惰?

回答

2

habtm的文檔(以及has_many)指出,你可以用一個可選的參數訪問集合:

集合(force_reload = FALSE)

返回所有相關對象的數組。如果沒有找到空數組,則返回空數組 。

您可以使用user.roles(true)重新加載角色。

+0

你先生太棒了。我從來不知道存在。猜猜我應該更徹底地閱讀文檔。 感謝您的好回答! – taelor 2009-05-24 23:35:53