Skip to content

Instantly share code, notes, and snippets.

@benfalk
Created September 16, 2014 21:56
Show Gist options
  • Save benfalk/4b913cf9851c09be2ce9 to your computer and use it in GitHub Desktop.
Save benfalk/4b913cf9851c09be2ce9 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'active_record'
ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => ":memory:"
)
ActiveRecord::Schema.define do
create_table :widgets do |table|
table.column :name, :string
end
create_table :bits do |table|
table.column :widget_id, :integer
table.column :name, :string
end
end
class Widget < ActiveRecord::Base
has_many :bits
after_commit :let_me_know
def let_me_know
puts "I, widget #{name}, have changed."
end
end
class Bit < ActiveRecord::Base
belongs_to :widget, touch: true
end
Widget.create(name: 'Master P') # => I, widget Master P, have changed.
Widget.first.save # => I, widget Master P, have changed.
Widget.first.bits.create(name: 'shoelace') # => I, widget Master P, have changed.
ActiveRecord::Base.transaction do
20.times { |x| Bit.create(widget_id: 1, name: "strap-#{x}") }
end # => I, wiget Master P, have changed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment