Лучший способ - использовать оба, так как рельсы не надежны на 100%, когда проходит проверка уникальности.
Вы можете использовать:
validates :user_id, uniqueness: { scope: :question_id }
и чтобы быть на 100% в безопасности, добавьте эту проверку в свою базу данных (MySQL ex)
add_index :question_votes, [:user_id, :question_id], unique: true
и затем вы можете обработать свой контроллер, используя:
rescue ActiveRecord::RecordNotUnique
Так что теперь вы на 100% уверены, что у вас не будет дублированного значения:)