diff --git a/LiveSiteUpdatesNotes.txt b/LiveSiteUpdatesNotes.txt
new file mode 100644
index 00000000..ad2ae9dd
--- /dev/null
+++ b/LiveSiteUpdatesNotes.txt
@@ -0,0 +1,6 @@
+make sure that root individuals have same 'joinedwithcode' as 'code'
+
+User.all.each do |u|
+ u.generation = u.get_generation
+ u.save
+end
\ No newline at end of file
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index 097ecdfb..a390eb83 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -10,6 +10,7 @@ module UsersHelper
user['value'] = u.name
user['profile'] = u.image.url(:square)
user['mapCount'] = u.maps.count
+ user['generation'] = u.generation
user['created_at'] = u.created_at.strftime("%m/%d/%Y")
user['rtype'] = "mapper"
diff --git a/app/models/user.rb b/app/models/user.rb
index f0c1345f..3dea654b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -54,6 +54,22 @@ class User < ActiveRecord::Base
def generate_code
#generate a random 8 letter/digit code that they can use to invite people
self.code = rand(36**8).to_s(36)
+
+ self.generation = self.get_generation
+ end
+
+ def get_generation
+ if self.joinedwithcode == self.code
+ # if your joinedwithcode equals your code you must be GEN 0
+ gen = 0
+ elsif self.generation
+ # if your generation has already been calculated then just return that value
+ gen = self.generation
+ else
+ # if your generation hasn't been calculated, base it off the
+ # generation of the person whose code you joined with + 1
+ gen = User.find_by_code(self.joinedwithcode).get_generation + 1
+ end
end
def settings
diff --git a/app/views/layouts/_templates.html.erb b/app/views/layouts/_templates.html.erb
index 25f4d024..00db4561 100644
--- a/app/views/layouts/_templates.html.erb
+++ b/app/views/layouts/_templates.html.erb
@@ -144,7 +144,7 @@
Mapping since: {{created_at}}
-
Generation: 1
+
Generation: {{generation}}
{{mapCount}}
diff --git a/db/migrate/20141121204712_add_generation_to_users.rb b/db/migrate/20141121204712_add_generation_to_users.rb
new file mode 100644
index 00000000..b31e2832
--- /dev/null
+++ b/db/migrate/20141121204712_add_generation_to_users.rb
@@ -0,0 +1,5 @@
+class AddGenerationToUsers < ActiveRecord::Migration
+ def change
+ add_column :users, :generation, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 606735d7..fc6b7335 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -1,134 +1,135 @@
-# encoding: UTF-8
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# Note that this schema.rb definition is the authoritative source for your
-# database schema. If you need to create the application database on another
-# system, you should be using db:schema:load, not running all the migrations
-# from scratch. The latter is a flawed and unsustainable approach (the more migrations
-# you'll amass, the slower it'll run and the greater likelihood for issues).
-#
-# It's strongly recommended to check this file into your version control system.
-
-ActiveRecord::Schema.define(:version => 20140930013020) do
-
- create_table "in_metacode_sets", :force => true do |t|
- t.integer "metacode_id"
- t.integer "metacode_set_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- add_index "in_metacode_sets", ["metacode_id"], :name => "index_in_metacode_sets_on_metacode_id"
- add_index "in_metacode_sets", ["metacode_set_id"], :name => "index_in_metacode_sets_on_metacode_set_id"
-
- create_table "mappings", :force => true do |t|
- t.text "category"
- t.integer "xloc"
- t.integer "yloc"
- t.integer "topic_id"
- t.integer "synapse_id"
- t.integer "map_id"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "maps", :force => true do |t|
- t.text "name"
- t.boolean "arranged"
- t.text "desc"
- t.text "permission"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.boolean "featured"
- t.string "screenshot_file_name"
- t.string "screenshot_content_type"
- t.integer "screenshot_file_size"
- t.datetime "screenshot_updated_at"
- end
-
- create_table "metacode_sets", :force => true do |t|
- t.string "name"
- t.text "desc"
- t.integer "user_id"
- t.boolean "mapperContributed"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- add_index "metacode_sets", ["user_id"], :name => "index_metacode_sets_on_user_id"
-
- create_table "metacodes", :force => true do |t|
- t.text "name"
- t.string "icon"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "color"
- end
-
- create_table "synapses", :force => true do |t|
- t.text "desc"
- t.text "category"
- t.text "weight"
- t.text "permission"
- t.integer "node1_id"
- t.integer "node2_id"
- t.integer "user_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- end
-
- create_table "topics", :force => true do |t|
- t.text "name"
- t.text "desc"
- t.text "link"
- t.text "permission"
- t.integer "user_id"
- t.integer "metacode_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "image_file_name"
- t.string "image_content_type"
- t.integer "image_file_size"
- t.datetime "image_updated_at"
- t.string "audio_file_name"
- t.string "audio_content_type"
- t.integer "audio_file_size"
- t.datetime "audio_updated_at"
- end
-
- create_table "users", :force => true do |t|
- t.string "name"
- t.string "email"
- t.text "settings"
- t.string "code", :limit => 8
- t.string "joinedwithcode", :limit => 8
- t.string "crypted_password"
- t.string "password_salt"
- t.string "persistence_token"
- t.string "perishable_token"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "encrypted_password", :limit => 128, :default => ""
- t.string "remember_token"
- t.datetime "remember_created_at"
- t.string "reset_password_token"
- t.datetime "last_sign_in_at"
- t.string "last_sign_in_ip"
- t.integer "sign_in_count", :default => 0
- t.datetime "current_sign_in_at"
- t.string "current_sign_in_ip"
- t.datetime "reset_password_sent_at"
- t.boolean "admin"
- t.string "image_file_name"
- t.string "image_content_type"
- t.integer "image_file_size"
- t.datetime "image_updated_at"
- end
-
- add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
-
-end
+# encoding: UTF-8
+# This file is auto-generated from the current state of the database. Instead
+# of editing this file, please use the migrations feature of Active Record to
+# incrementally modify your database, and then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your
+# database schema. If you need to create the application database on another
+# system, you should be using db:schema:load, not running all the migrations
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended to check this file into your version control system.
+
+ActiveRecord::Schema.define(:version => 20141121204712) do
+
+ create_table "in_metacode_sets", :force => true do |t|
+ t.integer "metacode_id"
+ t.integer "metacode_set_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ add_index "in_metacode_sets", ["metacode_id"], :name => "index_in_metacode_sets_on_metacode_id"
+ add_index "in_metacode_sets", ["metacode_set_id"], :name => "index_in_metacode_sets_on_metacode_set_id"
+
+ create_table "mappings", :force => true do |t|
+ t.text "category"
+ t.integer "xloc"
+ t.integer "yloc"
+ t.integer "topic_id"
+ t.integer "synapse_id"
+ t.integer "map_id"
+ t.integer "user_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ create_table "maps", :force => true do |t|
+ t.text "name"
+ t.boolean "arranged"
+ t.text "desc"
+ t.text "permission"
+ t.integer "user_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ t.boolean "featured"
+ t.string "screenshot_file_name"
+ t.string "screenshot_content_type"
+ t.integer "screenshot_file_size"
+ t.datetime "screenshot_updated_at"
+ end
+
+ create_table "metacode_sets", :force => true do |t|
+ t.string "name"
+ t.text "desc"
+ t.integer "user_id"
+ t.boolean "mapperContributed"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ add_index "metacode_sets", ["user_id"], :name => "index_metacode_sets_on_user_id"
+
+ create_table "metacodes", :force => true do |t|
+ t.text "name"
+ t.string "icon"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ t.string "color"
+ end
+
+ create_table "synapses", :force => true do |t|
+ t.text "desc"
+ t.text "category"
+ t.text "weight"
+ t.text "permission"
+ t.integer "node1_id"
+ t.integer "node2_id"
+ t.integer "user_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ create_table "topics", :force => true do |t|
+ t.text "name"
+ t.text "desc"
+ t.text "link"
+ t.text "permission"
+ t.integer "user_id"
+ t.integer "metacode_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ t.string "image_file_name"
+ t.string "image_content_type"
+ t.integer "image_file_size"
+ t.datetime "image_updated_at"
+ t.string "audio_file_name"
+ t.string "audio_content_type"
+ t.integer "audio_file_size"
+ t.datetime "audio_updated_at"
+ end
+
+ create_table "users", :force => true do |t|
+ t.string "name"
+ t.string "email"
+ t.text "settings"
+ t.string "code", :limit => 8
+ t.string "joinedwithcode", :limit => 8
+ t.string "crypted_password"
+ t.string "password_salt"
+ t.string "persistence_token"
+ t.string "perishable_token"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ t.string "encrypted_password", :limit => 128, :default => ""
+ t.string "remember_token"
+ t.datetime "remember_created_at"
+ t.string "reset_password_token"
+ t.datetime "last_sign_in_at"
+ t.string "last_sign_in_ip"
+ t.integer "sign_in_count", :default => 0
+ t.datetime "current_sign_in_at"
+ t.string "current_sign_in_ip"
+ t.datetime "reset_password_sent_at"
+ t.boolean "admin"
+ t.string "image_file_name"
+ t.string "image_content_type"
+ t.integer "image_file_size"
+ t.datetime "image_updated_at"
+ t.integer "generation"
+ end
+
+ add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
+
+end
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
index d41aad01..8a461a50 100644
--- a/test/fixtures/users.yml
+++ b/test/fixtures/users.yml
@@ -5,6 +5,7 @@ user:
email: user@user.com
encrypted_password: $2a$10$psR68SWYNy5ZKQPs9FrFM.HuRMrTXO/YFzv.HaUmdCsQZsQrG1XAW
code: qwertyui
+ joinedwithcode: qwertyui
admin: false
admin:
@@ -12,4 +13,5 @@ admin:
email: admin@admin.com
encrypted_password: $2a$10$psR68SWYNy5ZKQPs9FrFM.HuRMrTXO/YFzv.HaUmdCsQZsQrG1XAW
code: iuytrewq
+ joinedwithcode: iuytrewq
admin: true