0

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

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

4

1 回答 1

1

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

这是支持延迟加载组的结果。DM-1 将等待查看接下来访问的属性以仅加载一组有限的属性。

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

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

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)
于 2012-11-20T23:21:19.953 回答