懒惰地在ActiveRecord中加载列

时间:2011-08-28 22:43:36

标签: activerecord lazy-loading

所以我一直在做一些研究,但还没有找到一个很好的解决方案。我试图避免在ActiveRecord模型中加载很少使用的列。

这是我的真实世界问题:我有一个帐户表:

create_table "accounts", :force => true do |t|
  t.string   "name"
  t.text "policies" # this can be a lot of data
end

我一直从数据库中提取帐户,我很少需要策略字段。我担心的是开销。这是我转移的额外数据,我很少需要。

如何将rails默认为仅拉取name列并在需要时获取策略列?

我知道DataMapper有一个解决方案,称为属性的“延迟加载”。在ActiveRecord中是否有标准或普遍接受的解决方案?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

activerecord-lazy-attributes库可能会提供您需要的功能。

摘自README:

  

此ActiveRecord扩展允许定义要延迟加载的属性。它的主要目的是避免每个SELECT加载大型列(例如BLOB)。