首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Rails只使用几个属性操作ActiveRecords

使用Rails只使用几个属性操作ActiveRecords
EN

Stack Overflow用户
提问于 2010-10-22 13:49:27
回答 1查看 231关注 0票数 0

对于缓存问题,我正在缓存所需对象的属性数组:

代码语言:javascript
复制
friends = [{:id => 4, :name => "Kevin"}, {:id => 12, :name => "Martin"}, …]

是否可能有一个使用这个数组的用户列表,以便我可以使用Ruby方法?例如,我通常会得到一张非朋友的清单:

代码语言:javascript
复制
non_friends = User.all - current_user.friends

在这里,current_user.friends将被缓存的数组所替代,只使用缓存的属性:

代码语言:javascript
复制
friends = [
    #<User id: 4, name: "Kevin", created_at: nil, updated_at: nil, email: nil>,
    #<User id: 12, name: "Martin", created_at: nil, updated_at: nil, email: nil>,
    …
]

有可能吗?这是一种很好的缓存方法吗?( ActiveRecords的大列表不适合1MB的Memcache块。)

谢谢,

凯文

编辑:这背后的想法是使用一个排序/处理的2000 ActiveRecords列表,我的应用程序主要使用这个列表,但是由于它不适合于一个Memcache块,所以我尝试将有趣的属性缓存为一个数组。现在,我如何像使用ActiveRecord数组一样使用这个数组?

EN

回答 1

Stack Overflow用户

发布于 2010-10-22 14:32:58

好的,您可以缓存用户ID,然后在查找器条件下排除这些ID。在您的示例中,假设您有一个包含In和名称的friends散列数组:

代码语言:javascript
复制
friend_ids = friends.map{ |f| f[:id] }
if friend_ids.empty?
  non_friends = User.all
else
  non_friends = User.all(:conditions => ['id NOT IN (?)', current_user.friend_ids])
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3997427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档