1

私はRails3アプリケーションを持っており、Railsはかなり初めてです。住所モデルがあります。フォームが送信されると、アドレスは正常に保存されます。アドレスモデルには、次のようなフィールドがあります。

property :street_address, Text, :required => true

Railsコンソールで、次のように入力します。

1.9.3p194 :062 > add  = Address.get(208)
 => #<Address @id=208 @street_address=<**not loaded**> @postal_code="400123" @latitude=0.0            @longitude=0.0 @sub_area="subarea1" @city_id=1 @state_id=16 @country_id=1 @area_id=nil> 
1.9.3p194 :063 > add.street_address
 => "STREET" 

番地に「未読み込み」と表示されるのはなぜですか?別のモデルのテキストデータ型のフィールドでも同じことが起こります。

4

2 に答える 2

0

DataMapperを使用すると、一部のプロパティ(たとえば、テキストタイプのプロパティ)はデフォルトで遅延ロードされます。コードからアクセスされるまで、データベースからフェッチされません。

:lazy => falseモデル定義のプロパティに追加することで、この動作をオーバーライドできます。

詳細については、ドキュメントを参照してください。そこにLazyLoadingというタイトルのセクションがあります。

于 2012-08-27T10:12:07.383 に答える
0

DataMapperは、データベースクエリを高速化するために、いくつかのデータ型を遅延ロードします。これは、大量のデータ(テキスト属性など)を含むフィールドは、必要になるまで読み込まれないことを意味します

テキストフィールドはデフォルトで遅延ロードされますが、必要に応じてオーバーライドできます。

property :street_address, Text, :required => true, :lazy => false
于 2012-08-27T10:25:27.967 に答える