0

ARで長年の経験を積んだ後、ORMフレームワークとしてDataMapperを使用しています。そのため、ARの動作を反映した特定のDM関数を見つけようとすることがあります。幸運なこともあれば、そうでないこともあります。#reloadディレクティブを使用すると、私はちょっと困惑しています。その方法は存在しますが、どういうわけか私が期待したことをしません。基本的に、インスタンス属性がDBを見上げて更新されるAR動作の代わりに、DMはインスタンスのすべての属性を「ロードされていない」とマークします。

DMを使用してこれを達成できるかどうか誰かに教えてもらえますか?

4

1 に答える 1

1

DataMapper は属性をロードされていないとマークし、次のアクセスでロードします。

これは、遅延読み込みグループのサポートによるものです。DM-1 は、次にアクセスされる属性を確認するのを待って、限られた一連の属性のみをロードします。

デフォルトでは、すべての属性が :default グループにあるため、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)
于 2012-11-20T23:21:19.953 に答える