1

我有一个 rails 3 应用程序,而且我对 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" 

为什么街道地址显示“未加载”?另一个模型中的 Text 数据类型的字段也会发生同样的情况。

4

2 回答 2

0

DataMapper 延迟加载某些数据类型以使数据库查询更快。这意味着具有大量数据(如文本属性)的字段在需要之前不会被加载

默认情况下,文本字段是延迟加载的,如果需要,您可以覆盖它。

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

使用 DataMapper,一些属性(例如 Text 类型的属性)默认是延迟加载的,即。在您的代码访问它们之前,它们不会从数据库中获取。

:lazy => false您可以通过添加到模型定义中的属性来覆盖此行为。

有关更多详细信息,请参阅文档。那里有一个标题为延迟加载的部分。

于 2012-08-27T10:12:07.383 回答