我有一个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数据类型字段也会发生同样的事情。
答案 0 :(得分:0)
使用DataMapper,一些属性(例如Text类型的属性)默认是延迟加载的,即。在您的代码访问它们之前,它们不会从数据库中获取。
您可以通过将:lazy => false
添加到模型定义中的属性来覆盖此行为。
有关更多详细信息,请参阅documentation。那里有一个名为Lazy Loading的部分。
答案 1 :(得分:0)
DataMapper延迟加载一些数据类型以加快数据库查询速度。这意味着具有大量数据的字段(如文本属性)在需要之前不会加载
默认情况下,文本字段会延迟加载,如果需要,可以覆盖。
property :street_address, Text, :required => true, :lazy => false