某些数据在rails控制台中显示为“未加载”

时间:2012-08-27 09:15:10

标签: ruby ruby-on-rails-3 ruby-datamapper

我有一个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数据类型字段也会发生同样的事情。

2 个答案:

答案 0 :(得分:0)

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

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

有关更多详细信息,请参阅documentation。那里有一个名为Lazy Loading的部分。

答案 1 :(得分:0)

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

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

property :street_address, Text, :required => true, :lazy => false