Skip to content

Instantly share code, notes, and snippets.

@mtsmfm
Last active September 23, 2020 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mtsmfm/3f4c6ca4e63d03f42460ceec41a14768 to your computer and use it in GitHub Desktop.
Save mtsmfm/3f4c6ca4e63d03f42460ceec41a14768 to your computer and use it in GitHub Desktop.
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'mongoid'
end
require 'yaml'
require 'tempfile'
require 'logger'
uri = 'mongodb://mongo/test'
Tempfile.open(%w(config .yml)) do |f|
f.write(<<~YAML)
development:
clients:
default:
uri: #{uri}
YAML
f.flush
Mongoid.load!(f.path, 'development')
Mongoid::Clients.clients.each do |_, client|
client.logger.level = Logger::ERROR
end
end
class Foo
include Mongoid::Document
embeds_one :bar, cascade_callbacks: true
end
class Bar
include Mongoid::Document
embedded_in :foo
after_save :test_after_save
def test_after_save
puts "after_save is called" if $output_after_save_log
end
end
Foo.delete_all
foo1 = Foo.new(bar: Bar.new)
foo1.save
foo2 = Foo.new(bar: Bar.new)
foo2.save
$output_after_save_log = true
foo1.bar = nil
foo1.save
# => <output nothing>
foo2.update_attributes!(bar: nil)
# => after_save is called
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment