From 599570f033581d03b317156c3383b247b1f05b62 Mon Sep 17 00:00:00 2001 From: benji Date: Tue, 8 Sep 2015 15:51:23 +0200 Subject: [PATCH] Add validations --- app/models/client.rb | 3 +++ app/models/transaction.rb | 8 ++++++++ app/models/user.rb | 3 +++ 3 files changed, 14 insertions(+) diff --git a/app/models/client.rb b/app/models/client.rb index bb8f315..bb674c5 100644 --- a/app/models/client.rb +++ b/app/models/client.rb @@ -12,6 +12,9 @@ class Client < ActiveRecord::Base before_create :generate_key + validates :name, presence: true, uniqueness: true + validates :key, presence: true, uniqueness: true + def transactions Transaction.where(origin: name) end diff --git a/app/models/transaction.rb b/app/models/transaction.rb index 6dd1bbb..2e6f346 100644 --- a/app/models/transaction.rb +++ b/app/models/transaction.rb @@ -19,13 +19,21 @@ class Transaction < ActiveRecord::Base after_save :recalculate_balances after_destroy :recalculate_balances + validates :amount, numericality: { greater_than: 0 } + validate :different_debtor_creditor + def client Client.find_by name: origin end private + def recalculate_balances creditor.calculate_balance! debtor.calculate_balance! end + + def different_debtor_creditor + self.errors.add :base, "Can't write money to yourself" if self.debtor == self.creditor + end end diff --git a/app/models/user.rb b/app/models/user.rb index 18f7582..f29c0af 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -17,6 +17,9 @@ class User < ActiveRecord::Base has_many :outgoing_transactions, class_name: 'Transaction', foreign_key: 'debtor_id' + validates :name, presence: true, uniqueness: true + validates :balance, presence: true + def transactions Transaction.where("creditor_id = ? OR debtor_id = ?", id, id) end