Skip to content

Instantly share code, notes, and snippets.

Eric Hurst erichurst

Block or report user

Report or block erichurst

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@erichurst
erichurst / mod_machine.rb
Last active Aug 29, 2015
Simple module for dynamic values
View mod_machine.rb
module ModMachine
extend ActiveSupport::Concern
included do
end
module ClassMethods
#
# Builds a module with constants assigned to the index passed in the `options` array. Be sure
# to pass all arguments as you would write them manually. In other words `attribute` and any
View Twitter Gem Geocode Examples
require 'twitter'
Twitter::Search.new.geocode(39.037, -94.5874, '5mi').fetch().results
#=> all tweets within 5 miles of lat/lon
Twitter::Search.geocode(39.037, -94.5874, '5mi').fetch().results.first
#=> most recent tweet within 5 miles of lat/lon
Twitter::Search.new('dinner').geocode(39.037, -94.5874, '5mi').fetch().results
#=> all tweets containing the word 'dinner' within 5 miles of lat/lon
View Geo.js
var Geo = navigator.geolocation, // {Object|null} a shortcut to the geolocation static class
options = { // {Object} options available to calls for position
enableHighAccuracy: false, // {Boolean} Whether or not to use more resources to get a more accurate position
maximumAge: 0, // {Number|Infinity} The maximum number of milliseconds since the last check.
timeout: null // {Number|null} The maximum number of milliseconds to wait for a fix
},
watchId; // {Number} an ID to a watch timeout
// handles an error finding the user's position
function onError(error) {
View elder.rb
class Elder < ActiveRecord::Base
def self.increment_distribution_count(user_id)
self.find_by_user_id(user_id).increment!(:distribution_count)
end
end
View dontdothis.rb
class UsersController < ApplicationController
...
def create
referral_id = User.find_valid_referral(params[:user][:referral])
@user = User.new(params[:user].merge(:referral_id => referral_id))
...
end
...
end
View much_better_user.rb
def self.find_valid_referral(username)
case
when username.blank? then EarlyAdopter.first(:group => "distribution_count ASC").user_id
when !username.blank? && self.exists?(:username => username) then User.find_by_username(username).id
else nil
end
end
View referrer_must_be_existing_user.rb
def referrer_must_be_existing_user
errors.add(:referral_id, "is not a valid user") if referral_id.blank?
end
View first_bad_solution.rb
def create
referral = User.find_by_username(params[:user][:referral])
@user = User.new(params[:user].merge(:referral_id => referral.id))
end
View a_better_approach.rb
class User < ActiveRecord::Base
...
def self.find_valid_referral(username)
user = User.find_by_username(username)
if user.nil?
nil
else
user.id
end
end
View full_solution.rb
class User < ActiveRecord::Base
validate_on_create :referrer_must_be_existing_user
...
def self.find_valid_referral(username)
case
when username.blank? then Elder.first(:group => "distribution_count ASC").user_id
when !username.blank? && self.exists?(:username => username) then User.find_by_username(username).id
else nil
end
end
You can’t perform that action at this time.