我有以下实体: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