Как узнать, не существует ли запись с

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть Friendship модель, которая позволяет пользователям дружить друг с другом. Записи для них Frienships имеют a requesting_user_id и an accepting_user_id . Я хочу создать метод, который проверяет, что запись с той же парой accepting_user и requesting_user еще не существует. Короче говоря, что один пользователь уже подружился с другим пользователем.

Я начал это в своей User модели:

 def can_befriend?(accepting_user)
  @accepting_user = Friendship.find_by_accepting_user_id(accepting_user)
  @requesting_user = current_user
end
  

Но я не уверен, как проверить, что пара еще не существует. Любая помощь?

Ответ №1:

На самом деле вы можете использовать динамический метод перекрестного поиска, который будет искать оба одновременно. Это полный рот, но должно сработать.

 @old_friendship = Friendship.find_by_accepting_user_id_and_requesting_user_id(accepting_user.id, requesting_user.id)
if @old_friendship.nil?
    #create new friendship here
end
  

Комментарии:

1. вы также можете использовать вариант find_or_create_ …, чтобы убедиться, что вы получите обратно действительную запись дружбы — либо старую, либо новую