#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_ …, чтобы убедиться, что вы получите обратно действительную запись дружбы — либо старую, либо новую