Sha256: a9587d8fe0cb5700cb2c6cfcb36606b1723dd78fba60e6699fbdd5df4ea44e48

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

module ActsAsAccount
  module ActiveRecordExtension
    def self.included(base) # :nodoc:
      base.extend ClassMethods
      base.class_eval do
        def account(name = :default)
          __send__("#{name}_account") || __send__("create_#{name}_account", :name => name.to_s)
        end
      end
    end

    module ClassMethods

      def has_account(name = :default)
        has_one :"#{name}_account", -> { where name: name }, class_name: "ActsAsAccount::Account", as: :holder

        unless instance_methods.include?('accounts')
          has_many :accounts, class_name: "ActsAsAccount::Account", as: :holder
        end
      end

      def is_reference
        has_many :postings, class_name: "ActsAsAccount::Posting", as: :reference
        class_eval <<-EOS
          def booked?
            postings.any?
          end
        EOS
      end

      def has_global_account(name)
        class_eval <<-EOS
          def account
            ActsAsAccount::Account.for(:#{name})
          end
        EOS
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
acts_as_account-3.2.3 lib/acts_as_account/active_record_extensions.rb
acts_as_account-3.2.2 lib/acts_as_account/active_record_extensions.rb
acts_as_account-3.2.1 lib/acts_as_account/active_record_extensions.rb
acts_as_account-3.2.0 lib/acts_as_account/active_record_extensions.rb
acts_as_account-3.1.2 lib/acts_as_account/active_record_extensions.rb
acts_as_account-3.1.1 lib/acts_as_account/active_record_extensions.rb
acts_as_account-3.1.0 lib/acts_as_account/active_record_extensions.rb