Вы проверили find_or_create_by
? Это позволяет вам либо найти запись с определенными атрибутами, либо создать новую на основе данных.
Так, например. учитывать следующее:
u = User.find_or_create_by(name:"Test", email:"test@test.com")
# while later
u = User.find_or_create_by(name:"Test", email:"test@test.com")
Это будет фактически та же самая запись, второй вызов будет только запрашивать запись, а не создавать новую.