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