Skip to content

Instantly share code, notes, and snippets.

@nachokb
Created May 31, 2016 20:36
Show Gist options
  • Save nachokb/fe442d175d5a3e47cf8dc86f0ac2fb35 to your computer and use it in GitHub Desktop.
Save nachokb/fe442d175d5a3e47cf8dc86f0ac2fb35 to your computer and use it in GitHub Desktop.
# rubocop:disable Style/DotPosition
# rubocop:disable Style/GlobalVars
# test Rails 5's ActiveRecord OR
system 'rm Gemfile' if File.exist?('Gemfile')
$ar_version = ENV['AR_VERSION']
$ar_version ||= '5.0.0.rc1'
$try_patch = ENV['TRY_PATCH'] == 'true'
$enable_byebug = false
File.write('Gemfile', <<-GEMFILE)
source 'https://rubygems.org'
gem 'activerecord',
#{$ar_version.inspect}
gem 'sqlite3'
#{"gem 'byebug'" if $enable_byebug}
GEMFILE
system 'bundle install'
require 'byebug' if $enable_byebug
require 'bundler'
Bundler.setup(:default)
require 'active_record'
require 'minitest/autorun'
require 'logger'
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :companies do |t|
t.string :name
t.datetime :created_at
t.integer :employees_count
end
end
class Company < ActiveRecord::Base
end
puts Company.
where(name: 'ACME').
to_sql
# SELECT "companies".*
# FROM "companies"
# WHERE "companies"."name" = 'ACME'
puts Company.
where(name: 'ACME').
or(Company.where('employees_count > ?', 10)).
to_sql
# SELECT "companies".*
# FROM "companies"
# WHERE ("companies"."name" = 'ACME' OR (employees_count > 10))
puts Company.
where(name: 'ACME').
or(Company.where('employees_count > ?', 10)).
where('created_at > ?', 1.year.ago).
to_sql
# SELECT "companies".*
# FROM "companies"
# WHERE ("companies"."name" = 'ACME' OR (employees_count > 10))
# AND (created_at > '2015-05-31 20:25:08.996444')
puts Company.
where(name: 'ACME').
where('created_at > ?', 1.year.ago).
or(Company.where('employees_count > ?', 10)).
to_sql
# SELECT "companies".*
# FROM "companies"
# WHERE ("companies"."name" = 'ACME' AND (created_at > '2015-05-31 20:25')
# OR (employees_count > 10))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment