Created
July 10, 2012 08:25
-
-
Save gmanley/3082017 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
require 'bundler/setup' | |
Bundler.require | |
module Soshified | |
def self.setup! | |
config = YAML.load_file(File.join(File.dirname(__FILE__), 'config/db.yml')) | |
DataMapper::Logger.new(STDOUT, :debug) | |
DataMapper.setup(:default, config['ipgallery']) | |
end | |
end | |
class Member | |
include DataMapper::Resource | |
has 1, :profile | |
property :id, Serial, field: 'member_id' | |
property :name, String | |
property :email, String | |
property :display_name, String, field: 'members_display_name' | |
property :day_of_birth, Integer, field: 'bday_day' | |
property :month_of_birth, Integer, field: 'bday_month' | |
property :year_of_birth, Integer, field: 'bday_year' | |
def birthday | |
birthday_components = [year_of_birth, month_of_birth, day_of_birth] | |
unless birthday_components.include?(0) || birthday_components.include?(nil) | |
Date.new(*birthday_components) rescue binding.pry | |
end | |
end | |
def age | |
if birthday | |
now = Date.today | |
now.year - birthday.year - ((now.month > birthday.month || (now.month == birthday.month && now.day >= birthday.day)) ? 0 : 1) | |
end | |
end | |
end | |
class Profile | |
include DataMapper::Resource | |
storage_names[:default] = "pfields_content" | |
belongs_to :member | |
property :member_id, Serial | |
property :country, String, field: 'field_2' | |
end | |
us_members = Member.all(fields: [:day_of_birth, :month_of_birth, :year_of_birth], profile: { country: 'us' }) | |
ages = us_members.map(&:age).compact | |
Hash[ages.group_by {|i| i}.map {|key, value| [key, value.count] }].sort.each do |age| | |
puts "#{age.first} years old: #{age.last} members" | |
end # => | |
# 22002 Total Membeers from US | |
# Out of the 4947 that gave their age: | |
# 0 years old: 2 members | |
# 1 years old: 4 members | |
# 2 years old: 7 members | |
# 3 years old: 6 members | |
# 4 years old: 2 members | |
# 5 years old: 2 members | |
# 6 years old: 1 member | |
# 7 years old: 1 member | |
# 10 years old: 3 members | |
# 11 years old: 11 members | |
# 12 years old: 27 members | |
# 13 years old: 61 members | |
# 14 years old: 133 members | |
# 15 years old: 259 members | |
# 16 years old: 421 members | |
# 17 years old: 455 members | |
# 18 years old: 546 members | |
# 19 years old: 536 members | |
# 20 years old: 546 members | |
# 21 years old: 476 members | |
# 22 years old: 394 members | |
# 23 years old: 246 members | |
# 24 years old: 220 members | |
# 25 years old: 123 members | |
# 26 years old: 102 members | |
# 27 years old: 77 members | |
# 28 years old: 60 members | |
# 29 years old: 50 members | |
# 30 years old: 35 members | |
# 31 years old: 28 members | |
# 32 years old: 17 members | |
# 33 years old: 10 members | |
# 34 years old: 7 members | |
# 35 years old: 9 members | |
# 36 years old: 6 members | |
# 37 years old: 5 members | |
# 38 years old: 2 members | |
# 39 years old: 2 members | |
# 40 years old: 3 members | |
# 41 years old: 4 members | |
# 43 years old: 1 member | |
# 44 years old: 2 members | |
# 45 years old: 3 members | |
# 47 years old: 2 members | |
# 49 years old: 2 members | |
# 50 years old: 2 members | |
# 51 years old: 2 members | |
# 53 years old: 1 member | |
# 54 years old: 1 member | |
# 55 years old: 1 member | |
# 58 years old: 2 members | |
# 61 years old: 1 member | |
# 67 years old: 1 member | |
# 68 years old: 1 member | |
# 70 years old: 1 member | |
# 72 years old: 1 member | |
# 84 years old: 1 member | |
# 97 years old: 1 member | |
# 98 years old: 4 members | |
# 99 years old: 4 members | |
# 100 years old: 4 members | |
# 101 years old: 8 members | |
# 102 years old: 2 members |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment