我有以下實體:brand,scoring_records。品牌has_many scoring_records。ruby on rails積極記錄垃圾回收問題(ruby 1.8.7和rails 2.3.5)
如果我在那裏,我對品牌工作的這樣一個塊:
brands.each{|brand|
# do some stuff
brand.do_some_stuff
some_scoring_records = ScoringRecords.find(:all,:conditions => ["computed_date = ?",today], :order => 'brand.id')
# do some more stuff
brand.do_some_more_stuff(brand)
brand.do_even_more_stuff(brand)
}
問題1:當我加載scoring_records這樣的,它是與該品牌自動導軌(是否關聯或等待關係被執行換句話說,如果我打電話給brand.scoring_records,它會調用數據庫還是有資格進行垃圾回收,那麼還有更多的東西是評分記錄嗎(我猜他們不是,因爲品牌與得分記錄有關係,所以因爲後來引用了品牌,而不符合條件,所以沒有任何記分記錄。是否有方法在沒有關聯的情況下加載這些品牌?
問題2:如果記錄不會被記錄下來,有沒有辦法讓記分記錄符合gc的條件,但保持品牌和其他關係?我不想刪除scoring_records,我只是想從內存中刪除它們。
我的問題#1不清楚,我知道局部變量和關係之間的差異。我想知道如果以這種方式加載數據也會加載關係。因此,如果我打電話給ScoringRecords.find(:all,:conditions => [「computed_date =?」,today),:order =>'brand.id',那麼做brand.scoring_records,數據庫,或者是已經有效加載的關係 – Joelio
不是,加載關係之前,你必須添加一個包含子句到你的** find **調用 –
這不會加載關係。可以做品牌= Brand.includes(:scoring_records) – jcnnghm