Я ищу способ разработки модели баланса между двумя пользователями в Ruby on Rails (но может быть более общим). Два пользователя Алиса и Боб начнут с баланса нуля в отношении другого. Теперь, если Алиса получит +4, я хочу, чтобы у Боба было -4. Вот что я придумал до сих пор:Дизайн базы данных/Rails - дизайн баланса между двумя пользователями
баланс с тремя полями: user_one, user_two и one_to_two. То есть, если я хочу, чтобы баланс для user_one был user_two, я просто принимаю one_to_two, и если я хочу от two_to_one, я беру -one_to_two (просто метод в модели баланса). Проблема в том, что я не мог просто использовать «has_many balanceances through» из модели User, так как баланс должен был знать, является ли пользователь user_one или user_two, который звонит (я должен был бы передать пользователя)
Баланс с тремя полями снова, но полностью асимметричными: если я создам баланс для Алисы Бобу, мне придется создать еще один пример баланса от Боба до Алисы. Это позволит удвоить объем памяти, необходимый для каждого «баланса» в базе данных, и потребовать обновления bob_to_alice каждый раз, когда я обновляю alice_to_bob.
Может ли кто-нибудь придумать что-то лучше или объяснить причину выбора одного из вышеуказанных? Дайте мне знать, если я смогу сделать что-то более ясное.