Rails Concern Example - equivalent/simple_listener GitHub Wiki
# Gemfile
# ...
gem 'simple_listener'
# app/models/concerns/generic_listener_concern
module GenericListenerConcern
extend ActiveSupport::Concern
included do
around_save :notify_listeners
end
# generic implementation of simple linstener in active record
def notify_listeners
is_create_save = !persisted?
if is_create_save
call_listeners(:before_create)
else
call_listeners(:before_update)
end
yield
if is_create_save
call_listeners(:on_create)
else
call_listeners(:on_update)
end
end
end
# app/models/user.rb
class User < ActiveRecord::Base
include SimpleListener
include GenericListenerConcern
end