我有一个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(用户)如下所示:
def can_request_friendship_with(user)
!self.eql?(user) && !self.friendships.find_by_friend_id(user)
end我的问题是,在我的例子中,这意味着每个用户4个查询。清单10个用户意味着40个查询。我能以某种方式急切地加载这个吗?
发布于 2010-05-10 20:16:06
我们有random_users和current_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
endhttps://stackoverflow.com/questions/2802357
复制相似问题