我有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个查询。我能以某种方式急切加载吗?
答案 0 :(得分:0)
我们已经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
end