Skip to content

Double entry accounting system for Rails models. Your models get accounts and you can do consistent transactions between them.

License

Notifications You must be signed in to change notification settings

betterplace/acts_as_account

Repository files navigation

acts_as_account

Build Status

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

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.

About

Double entry accounting system for Rails models. Your models get accounts and you can do consistent transactions between them.

Resources

License

Stars

Watchers

Forks

Packages

No packages published