Sha256: 9c5a3bf349f20425ee8ef1fd3fb0d3d5c3f2759346bbbffd25cc78d9c2c59c58
Contents?: true
Size: 876 Bytes
Versions: 1
Compression:
Stored size: 876 Bytes
Contents
# frozen_string_literals: true module Jobshop class Order < ApplicationRecord self.primary_keys = %i[ organization_id order_id ] after_initialize { self.order_id ||= SecureRandom.uuid if new_record? } belongs_to :organization, -> { readonly }, inverse_of: :orders belongs_to :customer, foreign_key: %i[ organization_id customer_id ] has_many :order_lines, inverse_of: :order, foreign_key: %i[ organization_id order_id ] around_save :notify_on_save def add_listener(listener) (@listeners ||= []) << listener end def notify_listeners(event_name, *args) @listeners && @listeners.each do |listener| if listener.respond_to?(event_name) listener.public_send(event_name, self, *args) end end end def notify_on_save yield notify_listeners(:on_save) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jobshop-0.0.167 | app/models/jobshop/order.rb |