繁体   English   中英

渴望加载此Rails关联

[英]Eager load this rails association

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

     -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(user)看起来像:

  def can_request_friendship_with(user)
   !self.eql?(user) && !self.friendships.find_by_friend_id(user)
  end

我的问题是,在我的情况下,这意味着每个用户4个查询。 列出10个用户意味着40个查询。 我能以某种方式渴望加载吗?

让我们有random_userscurrent_user
因此non_firends = random_users - current_user.freindships将在两个查询中返回用户查询中的所有non_friends。

实际上,您可以预载所有朋友并使用include? 友谊数组的方法:

@friendships = current_user.friendships

def can_request_friendship_with(user)
  !self.eql?(user) && @friendships.include? user
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM