Skip to content

Instantly share code, notes, and snippets.

@delba
delba / Gemfile
Last active December 17, 2015 11:09
Canceling a deletion
gem 'paranoia'
@delba
delba / post.rb
Last active December 17, 2015 11:19
Unscoping a model in an association
class Post < ActiveRecord::Base
has_many :comments
default_scope { where(public: true) }
end
class Comment < ActiveRecord::Base
belongs_to :post
default_scope { where(deleted_at: nil) }
def self.with_deleted
@delba
delba / class_vs_module.rb
Last active December 17, 2015 11:29
Method Objects and Aliasing
class Person
def greet(name)
"Hello, #{name}!"
end
end
Person.instance_method(:greet).bind(Object.new)["World"]
#=> TypeError: bind argument must be an instance of Person
module Greeter
def greet(name)
@delba
delba / to_proc.rb
Last active December 17, 2015 11:39
Symbol#to_proc
values = [1, 2, 3, 4, 5]
values.inject(&:+) #=> 15
values.inject(10, &:+) #=> 25
values.map &1.method(:+) #=> [2, 3, 4, 5, 6]
class String
def translate(word)
"#{word} => #{self}"
@delba
delba / article.rb
Last active December 17, 2015 12:49
Accessing ActiveRecord::Relation values
class Article < ActiveRecord::Base
def self.no_limit
all.tap do |rel|
logger.info rel.values #=> {:limit => 20}
rel.limit = nil
end
end
end
class ArticlesController < ApplicationController
@delba
delba / article.rb
Created May 21, 2013 13:38
Simple pagination
class Article < ActiveRecord::Base
extend Pagination
self.per_page = 20
end
# Article.page(params[:page])
# Article.page(params[:page]).per_page(params[:per_page])
# Article.paginate(page: params[:page], per_page: params[:per_page])
@delba
delba / migration.rb
Last active December 17, 2015 15:09
ActiveRecord::Migration outside of Rails
DB_FILE = 'tmp/test_db'
FileUtils.mkdir_p File.dirname(DB_FILE)
FileUtils.rm_f DB_FILE
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: DB_FILE
ActiveRecord::Migration.class_exec do
self.verbose = false
@delba
delba / Rakefile
Created May 22, 2013 22:56
Rake test
require 'rake/testtask'
require 'bundler'
Bundler::GemHelper.install_tasks
tasks default: [:test]
Rake::TestTask.new do |task|
task.pattern = 'test/*_test.rb'
end
@delba
delba / dependent_association.rb
Created May 25, 2013 16:16
Select all association with dependent options
dependent_associations = Article.reflect_on_all_associations.select do |association|
association.options.has_key?(:dependent)
end
@delba
delba / Rakefile
Last active December 17, 2015 18:29
Clean up tmp folder after running rake task
require 'task/testtask'
require 'rake/clean'
task default: [:test]
Rake::TestTask.new do |task|
task.pattern = "test/*_test.rb"
end
CLEAN.include 'tmp'