Стремитесь загрузить эту ассоциацию рельсов - PullRequest
0 голосов
/ 10 мая 2010

У меня есть приложение 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 запросов. Могу ли я как-то стремиться загрузить это?

1 Ответ

0 голосов
/ 10 мая 2010

Давайте получим 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
...