acts_as_account
Theory
ActsAsAccount implements a "Double Entry Accounting" system for your Rails-models.
It hooks into ActiveRecord and allows to add accounts to any model by
simply means of adding has_account
to your model. Because the accounts
are connected via a has_many
relation no migration to the account-holder
tables is needed.
We also hook into the ActionController request cycle to warn the developer if a request has left uncommitted changes in the system.
Configuration
It is possible to configure if attributes (postings_count, balance, last_valuta) are persisted on the Account or if it is calculated on demand.
ActsAsAccount.configure do |config|
# Default values:
# config.persist_attributes_on_account = true
end
Enabling persistence means that the sending and receiving account will aquire a lock when making a transfer to ensure correct data. This can be problematic in a high load scenario where many transfers to the same accounts are processed in parallel.
How to test
Run the cucumber features from the acs_as_account gem, just execute
rake features:create_database
cucumber
How to release
You need to update the data in VERSION
and Rakefile and run rake
(because it uses GemHadar).
rake gem:push
will push the version to rubygems.
Links
- Double Entry Accounting in a Relational Database: http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html (archived)
Compatibility
Rails 4 is supported since version 3.1.0, Rails 7 since 3.2.2 .
Credits
This gem was written for the payment backend of betterplace.org by Thies C. Arntzen, "thieso2", Norman Timmler, "unnu" and others.
Copyright
Copyright (c) 2010-2024 gut.org gAG, released under the Apache License v2.0.