如何使用DataMapper重新加载实例

时间:2012-08-30 12:07:06

标签: ruby ruby-datamapper datamapper-1.2

经过多年的AR经验,我使用DataMapper作为ORM框架。出于这个原因,我有时会尝试找到一个特定的DM函数来反映AR的某些行为。有时候我很幸运,有时候我不是。使用#reload指令,我有点陷入困境。该方法存在,但不知何故不能达到我的预期。基本上,DM不是将更新实例属性的AR行为更改为DB,而是以某种方式将实例中的每个属性标记为“未加载”。

有人可以告诉我,使用DM是否可以实现?

1 个答案:

答案 0 :(得分:1)

DataMapper将属性标记为未加载,并在下次访问时加载它们。

这是lazy loading群体支持的结果。 DM-1将等待查看接下来访问的属性,仅加载一组有限的属性。

默认情况下,所有属性都在:默认组中,因此一旦您点击一个属性,很可能会加载所有属性。

如果不需要这种懒惰行为,您可以执行以下操作:

resource = YourClass.first(:some => :stuff)
# full non lazy reload (make sure you do not have 
# a reference to old somewhere that causes confusion
resource = resource.model.get(resource.id)