Created
April 27, 2015 21:01
-
-
Save thomasklemm/5d932b97ca2c5be7067e to your computer and use it in GitHub Desktop.
Awesome ActiveRecord bug report script. How to use ActiveRecord and SQLite in a Ruby script.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based on http://www.jonathanleighton.com/articles/2011/awesome-active-record-bug-reports/ | |
# Run this script with `$ ruby my_script.rb` | |
require 'sqlite3' | |
require 'active_record' | |
# Use `binding.pry` anywhere in this script for easy debugging | |
require 'pry' | |
# Connect to an in-memory sqlite3 database | |
ActiveRecord::Base.establish_connection( | |
adapter: 'sqlite3', | |
database: ':memory:' | |
) | |
# Define a minimal database schema | |
ActiveRecord::Schema.define do | |
create_table :shows, force: true do |t| | |
t.string :name | |
end | |
create_table :episodes, force: true do |t| | |
t.string :name | |
t.belongs_to :show, index: true | |
end | |
end | |
# Define the models | |
class Show < ActiveRecord::Base | |
has_many :episodes, inverse_of: :show | |
end | |
class Episode < ActiveRecord::Base | |
belongs_to :show, inverse_of: :episodes, required: true | |
end | |
# Create a few records... | |
show = Show.create!(name: 'Big Bang Theory') | |
first_episode = show.episodes.create!(name: 'Pilot') | |
second_episode = show.episodes.create!(name: 'The Big Bran Hypothesis') | |
episode_names = show.episodes.pluck(:name) | |
puts "#{show.name} has #{show.episodes.size} episodes named #{episode_names.join(', ')}." | |
# => Big Bang Theory has 2 episodes named Pilot, The Big Bran Hypothesis. | |
# Use `binding.pry` here to experiment with this setup. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Perfect, thanks!