app/models/booking_template.rb in has_accounts-1.1.3 vs app/models/booking_template.rb in has_accounts-2.0.0

- old
+ new

@@ -45,13 +45,17 @@ end end # Tagging # ======= - acts_as_taggable - attr_accessible :tag_list + if defined?(ActsAsTaggableOn) && ActsAsTaggableOn::Tag.table_exists? + acts_as_taggable + attr_accessible :tag_list + acts_as_taggable_on :include_in_saldo + end + def booking_parameters(params = {}) params = HashWithIndifferentAccess.new(params) # Prepare parameters set by template booking_params = attributes.reject{|key, value| !["title", "comments", "credit_account_id", "debit_account_id"].include?(key)} @@ -91,20 +95,31 @@ # Override by passed in parameters HashWithIndifferentAccess.new(booking_params.merge!(params)) end # Factory methods + # =============== def build_booking(params = {}) Booking.new(booking_parameters(params)) end def create_booking(params = {}) Booking.create(booking_parameters(params)) end + # Build booking for template + # + # Raises an exception if template for given [code] cannot be found. + # + # @param code [String] to lookup template + # @param params [Hash] parameters to set on the Booking + # @return [Booking] unsaved Booking def self.build_booking(code, params = {}) - find_by_code(code).try(:build_booking, params) + template = find_by_code(code) + raise "BookingTemplate not found for '#{code}'" unless template + + template.build_booking params end def self.create_booking(code, params = {}) find_by_code(code).try(:create_booking, params) end @@ -145,12 +160,9 @@ line_item.price = self.amount end line_item end - - # Tagging - acts_as_taggable_on :include_in_saldo # Importer # ======== attr_accessible :matcher