代码之家  ›  专栏  ›  技术社区  ›  dombesz

紧急加载此rails关联

  •  0
  • dombesz  · 技术社区  · 16 年前

    我有一个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-friends-friends-friends-friends-friends看起来像:

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

    我的问题是,在我的例子中,这意味着每个用户有4个查询。清单10中的用户表示40个查询。我能不能迫不及待地装上这个?

    1 回复  |  直到 16 年前
        1
  •  0
  •   fl00r    16 年前

    让我们有 random_users current_user
    所以 non_firends = random_users - current_user.freindships 将在两次查询中返回所有来自用户的非好友查询。

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

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