首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >急切加载此rails关联

急切加载此rails关联
EN

Stack Overflow用户
提问于 2010-05-10 19:55:49
回答 1查看 524关注 0票数 0

我有一个rails应用程序,其中有一个用户列表。我在用户之间有不同的关系,例如与之共事,朋友,首选。在列出用户时,我必须决定当前用户是否可以将特定用户添加到他的朋友中。

代码语言:javascript
运行
复制
     -if current_user.can_request_friendship_with(user)
      =add_to_friends(user)
    -else
      =remove_from_friends(user)

   -if current_user.can_request_worked_with(user)
      =add_to_worked_with(user)
    -else
      =remove_from_worked_with(user)

Can_request_friendship_with(用户)如下所示:

代码语言:javascript
运行
复制
  def can_request_friendship_with(user)
   !self.eql?(user) && !self.friendships.find_by_friend_id(user)
  end

我的问题是,在我的例子中,这意味着每个用户4个查询。清单10个用户意味着40个查询。我能以某种方式急切地加载这个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-10 20:16:06

我们有random_userscurrent_user

因此,non_firends = random_users - current_user.freindships将在两个查询中返回所有来自用户的non_friends查询。

实际上你可以预先加载你所有的朋友,并使用include?方法来实现友情数组:

代码语言:javascript
运行
复制
@friendships = current_user.friendships

def can_request_friendship_with(user)
  !self.eql?(user) && @friendships.include? user
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2802357

复制
相关文章

相似问题

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