Skip to content

Instantly share code, notes, and snippets.

@lukesarnacki
Created January 14, 2014 14:42
Show Gist options
  • Save lukesarnacki/8419336 to your computer and use it in GitHub Desktop.
Save lukesarnacki/8419336 to your computer and use it in GitHub Desktop.
@db = ''
@user = ''
@password = ''
unless File.exist?('Gemfile')
File.write('Gemfile', <<-GEMFILE)
source 'https://rubygems.org'
gem 'rails', github: 'rails/rails'
gem 'arel', github: 'rails/arel'
gem 'pg'
GEMFILE
system 'bundle'
end
require 'bundler'
Bundler.setup(:default)
require 'active_record'
require 'minitest/autorun'
require 'logger'
require 'pg'
conn = PG.connect
conn.exec("DROP DATABASE IF EXISTS #{@db}")
conn.exec("CREATE DATABASE #{@db}")
conn.close
ActiveRecord::Base.establish_connection(adapter: 'postgresql', database: @db, user: @user, password: @password )
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :articles do |t|
end
create_table :authors do |t|
end
create_join_table :articles, :authors, table_name: :authorships
end
class Article < ActiveRecord::Base
has_many :authorships
has_many :authors, through: :authorships
end
class Author < ActiveRecord::Base
has_many :authorships
has_many :articles, through: :authorships
end
class Authorship < ActiveRecord::Base
belongs_to :author
belongs_to :article
default_scope -> { where(primary: true) } # !!!
end
puts (Author.first || Author.create).articles.to_sql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment