增加项目和用户的排序功能
This commit is contained in:
parent
cce0b299b7
commit
fa27d3bf32
|
@ -282,6 +282,7 @@ class AccountController < ApplicationController
|
||||||
def register_by_email_activation(user, &block)
|
def register_by_email_activation(user, &block)
|
||||||
token = Token.new(:user => user, :action => "register")
|
token = Token.new(:user => user, :action => "register")
|
||||||
if user.save and token.save
|
if user.save and token.save
|
||||||
|
UserStatus.create(:user_id => user.id)
|
||||||
Mailer.register(token).deliver
|
Mailer.register(token).deliver
|
||||||
flash[:notice] = l(:notice_account_register_done)
|
flash[:notice] = l(:notice_account_register_done)
|
||||||
redirect_to signin_path
|
redirect_to signin_path
|
||||||
|
@ -298,6 +299,7 @@ class AccountController < ApplicationController
|
||||||
user.activate
|
user.activate
|
||||||
user.last_login_on = Time.now
|
user.last_login_on = Time.now
|
||||||
if user.save
|
if user.save
|
||||||
|
UserStatus.create(:user_id => user.id)
|
||||||
self.logged_user = user
|
self.logged_user = user
|
||||||
flash[:notice] = l(:notice_account_activated)
|
flash[:notice] = l(:notice_account_activated)
|
||||||
redirect_to my_account_path
|
redirect_to my_account_path
|
||||||
|
@ -311,6 +313,7 @@ class AccountController < ApplicationController
|
||||||
# Pass a block for behavior when a user fails to save
|
# Pass a block for behavior when a user fails to save
|
||||||
def register_manually_by_administrator(user, &block)
|
def register_manually_by_administrator(user, &block)
|
||||||
if user.save
|
if user.save
|
||||||
|
UserStatus.create(:user_id => user.id)
|
||||||
# Sends an email to the administrators
|
# Sends an email to the administrators
|
||||||
Mailer.account_activation_request(user).deliver
|
Mailer.account_activation_request(user).deliver
|
||||||
account_pending
|
account_pending
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
class ProjectsController < ApplicationController
|
class ProjectsController < ApplicationController
|
||||||
layout 'base_projects'# by young
|
layout 'base_projects'# by young
|
||||||
menu_item :overview
|
menu_item :overview
|
||||||
|
@ -97,11 +96,58 @@ class ProjectsController < ApplicationController
|
||||||
#
|
#
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
|
# @projects.each do |project|
|
||||||
|
# ProjectStatus.create(:changesets_count => project.changesets.count, :project_id => project.id, :watchers_count => project.watcher_users.count)
|
||||||
|
# end
|
||||||
@projects = Project.visible.like(params[:name]) if params[:name].present?
|
@projects = Project.visible.like(params[:name]) if params[:name].present?
|
||||||
@project_count = @projects.count
|
@project_count = @projects.count
|
||||||
@project_pages = Paginator.new @project_count, @limit, params['page']
|
@project_pages = Paginator.new @project_count, @limit, params['page']
|
||||||
@offset ||= @project_pages.offset
|
|
||||||
@projects = @projects.offset(@offset).limit(@limit).order('created_on DESC').all
|
@offset ||= @project_pages.reverse_offset
|
||||||
|
#@projects = @projects.offset(@offset).limit(@limit).order('created_on DESC').all
|
||||||
|
if params[:project_sort_type].present?
|
||||||
|
case params[:project_sort_type]
|
||||||
|
when '0'
|
||||||
|
@offset ||= @project_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@projects = @projects.offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @project_count % @limit
|
||||||
|
@projects = @projects.offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
||||||
|
# @projects = @projects[@offset, @limit]
|
||||||
|
when '1'
|
||||||
|
@offset ||= @project_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@projects = @projects.includes(:project_status).reorder('project_statuses.changesets_count').offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @project_count % @limit
|
||||||
|
@projects = @projects.includes(:project_status).reorder('project_statuses.changesets_count').offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
|
||||||
|
#@projects = @projects[@offset, @limit]
|
||||||
|
when '2'
|
||||||
|
@offset ||= @project_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@projects = @projects.includes(:project_status).reorder('project_statuses.watchers_count').offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @project_count % @limit
|
||||||
|
@projects = @projects.includes(:project_status).reorder('project_statuses.watchers_count').offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
@offset ||= @project_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@projects = @projects.offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @project_count % @limit
|
||||||
|
@projects = @projects.offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
||||||
|
# @projects = @projects[@offset, @limit]
|
||||||
|
|
||||||
|
end
|
||||||
#end
|
#end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
|
@ -110,7 +156,6 @@ class ProjectsController < ApplicationController
|
||||||
unless params[:closed]
|
unless params[:closed]
|
||||||
scope = scope.active
|
scope = scope.active
|
||||||
end
|
end
|
||||||
@projects = scope.visible.offset(@offset).limit(@limit).order('created_on DESC').all
|
|
||||||
}
|
}
|
||||||
format.api {
|
format.api {
|
||||||
# @offset, @limit = api_offset_and_limit
|
# @offset, @limit = api_offset_and_limit
|
||||||
|
@ -155,6 +200,7 @@ class ProjectsController < ApplicationController
|
||||||
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
|
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
|
||||||
m = Member.new(:user => User.current, :roles => [r])
|
m = Member.new(:user => User.current, :roles => [r])
|
||||||
project = ProjectInfo.new(:user_id => User.current.id, :project_id => @project.id)
|
project = ProjectInfo.new(:user_id => User.current.id, :project_id => @project.id)
|
||||||
|
project_status = ProjectStatus.create(:project_id => @project.id)
|
||||||
@project.members << m
|
@project.members << m
|
||||||
@project.project_infos << project
|
@project.project_infos << project
|
||||||
end
|
end
|
||||||
|
@ -283,7 +329,6 @@ class ProjectsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def settings
|
def settings
|
||||||
@issue_custom_fields = IssueCustomField.sorted.all
|
@issue_custom_fields = IssueCustomField.sorted.all
|
||||||
@issue_category ||= IssueCategory.new
|
@issue_category ||= IssueCategory.new
|
||||||
|
@ -299,7 +344,6 @@ class ProjectsController < ApplicationController
|
||||||
def member
|
def member
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def file
|
def file
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -392,13 +436,12 @@ class ProjectsController < ApplicationController
|
||||||
end
|
end
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
# added by huang
|
# added by huang
|
||||||
|
|
||||||
def watcherlist
|
def watcherlist
|
||||||
if @watched
|
if @watched
|
||||||
@users -= watched.watcher_users
|
@users -= watched.watcher_users
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
# end
|
end
|
||||||
|
|
|
@ -158,12 +158,57 @@ class UsersController < ApplicationController
|
||||||
scope = User.logged.status(@status)
|
scope = User.logged.status(@status)
|
||||||
scope = scope.like(params[:name]) if params[:name].present?
|
scope = scope.like(params[:name]) if params[:name].present?
|
||||||
scope = scope.in_group(params[:group_id]) if params[:group_id].present?
|
scope = scope.in_group(params[:group_id]) if params[:group_id].present?
|
||||||
|
# scope.each do |user|
|
||||||
|
# UserStatus.create(:changesets_count => user.changesets.count, :watchers_count => user.watcher_users.count, :user_id => user.id)
|
||||||
|
# end
|
||||||
@user_count = scope.count
|
@user_count = scope.count
|
||||||
@user_pages = Paginator.new @user_count, @limit, params['page']
|
@user_pages = Paginator.new @user_count, @limit, params['page']
|
||||||
@offset ||= @user_pages.offset
|
#@offset ||= @user_pages.offset
|
||||||
@users = scope.order(sort_clause).limit(@limit).offset(@offset).all
|
#@users = scope.order(sort_clause).limit(@limit).offset(@offset).all
|
||||||
@user_base_tag = params[:id]?'base_users':'base'
|
@user_base_tag = params[:id]?'base_users':'base'
|
||||||
|
if params[:user_sort_type].present?
|
||||||
|
case params[:user_sort_type]
|
||||||
|
when '0'
|
||||||
|
@offset ||= @user_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@users = scope.offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @user_count % @limit
|
||||||
|
@users = scope.offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
||||||
|
# @projects = @projects[@offset, @limit]
|
||||||
|
when '1'
|
||||||
|
@offset ||= @user_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@users = scope.includes(:user_status).reorder('user_statuses.changesets_count').offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @user_count % @limit
|
||||||
|
@users = scope.includes(:user_status).reorder('user_statuses.changesets_count').offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
#sort {|x,y| y.user_status.changesets_count <=> x.user_status.changesets_count}
|
||||||
|
#@users = @users[@offset, @limit]
|
||||||
|
when '2'
|
||||||
|
@offset ||= @user_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@users = scope.includes(:user_status).reorder('user_statuses.watchers_count').offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @user_count % @limit
|
||||||
|
@users = scope.includes(:user_status).reorder('user_statuses.watchers_count').offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
#@users = @users[@offset, @limit]
|
||||||
|
end
|
||||||
|
else
|
||||||
|
@offset ||= @user_pages.reverse_offset
|
||||||
|
unless @offset == 0
|
||||||
|
@users = scope.offset(@offset).limit(@limit).all.reverse
|
||||||
|
else
|
||||||
|
limit = @user_count % @limit
|
||||||
|
@users = scope.offset(@offset).limit(limit).all.reverse
|
||||||
|
end
|
||||||
|
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
||||||
|
# @projects = @projects[@offset, @limit]
|
||||||
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
@groups = Group.all.sort
|
@groups = Group.all.sort
|
||||||
|
|
|
@ -23,6 +23,11 @@ class Changeset < ActiveRecord::Base
|
||||||
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
#Added by nie
|
||||||
|
has_one :project_status, :dependent => :destroy
|
||||||
|
has_one :users_status
|
||||||
|
#end
|
||||||
|
|
||||||
has_and_belongs_to_many :issues
|
has_and_belongs_to_many :issues
|
||||||
has_and_belongs_to_many :parents,
|
has_and_belongs_to_many :parents,
|
||||||
:class_name => "Changeset",
|
:class_name => "Changeset",
|
||||||
|
|
|
@ -57,7 +57,6 @@ class Project < ActiveRecord::Base
|
||||||
#ADDED BY NIE
|
#ADDED BY NIE
|
||||||
has_many :project_infos, :dependent => :destroy
|
has_many :project_infos, :dependent => :destroy
|
||||||
has_one :project_status, :class_name => "ProjectStatus", :dependent => :destroy
|
has_one :project_status, :class_name => "ProjectStatus", :dependent => :destroy
|
||||||
|
|
||||||
#end
|
#end
|
||||||
has_one :wiki, :dependent => :destroy
|
has_one :wiki, :dependent => :destroy
|
||||||
# Custom field for the project issues
|
# Custom field for the project issues
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
class Watcher < ActiveRecord::Base
|
class Watcher < ActiveRecord::Base
|
||||||
belongs_to :watchable, :polymorphic => true
|
belongs_to :watchable, :polymorphic => true
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
#Added by nie
|
||||||
|
has_one :project_status
|
||||||
|
has_one :users_status
|
||||||
|
#end
|
||||||
|
|
||||||
validates_presence_of :user
|
validates_presence_of :user
|
||||||
validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id]
|
validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id]
|
||||||
|
|
|
@ -19,6 +19,21 @@
|
||||||
</div>
|
</div>
|
||||||
<%end%>
|
<%end%>
|
||||||
|
|
||||||
|
<div class="pagination" style="border-bottom: 1px solid rgb(223,223,223); width: 95%; margin-left: 2%; margin-top: 15px" >
|
||||||
|
<ul style="margin-right:0px">
|
||||||
|
<li>
|
||||||
|
<%= link_to l(:label_sort_by_time), projects_path(:project_sort_type => '0') %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to l(:label_sort_by_active), projects_path(:project_sort_type => '1') %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to l(:label_sort_by_influence), projects_path(:project_sort_type => '2') %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="projects-index">
|
<div id="projects-index">
|
||||||
<%= render_project_hierarchy(@projects)%>
|
<%= render_project_hierarchy(@projects)%>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -86,6 +86,21 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="pagination" style="border-bottom: 1px solid rgb(223,223,223); width: 95%; margin-left: 2%; margin-top: 0px">
|
||||||
|
<ul style="margin-right:0px">
|
||||||
|
<li>
|
||||||
|
<%= link_to l(:label_sort_by_time), users_path(:user_sort_type => '0') %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to l(:label_sort_by_active), users_path(:user_sort_type => '1') %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to l(:label_sort_by_influence), users_path(:user_sort_type => '2') %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="autoscroll">
|
<div class="autoscroll">
|
||||||
<% for user in @users -%>
|
<% for user in @users -%>
|
||||||
<% unless user.id == 1%>
|
<% unless user.id == 1%>
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
class CreateProjectStatuses < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :project_statuses do |t|
|
||||||
|
t.integer :changesets_count
|
||||||
|
t.integer :watchers_count
|
||||||
|
t.integer :project_id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
class CreateUserStatuses < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :user_statuses do |t|
|
||||||
|
t.integer :changesets_count
|
||||||
|
t.integer :watchers_count
|
||||||
|
t.integer :user_id
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,76 @@
|
||||||
|
class StoredStatusProcedure < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
#sql = <<- END_OF_SQL_CODE
|
||||||
|
execute "
|
||||||
|
create procedure `sp_user_status_cursor`()
|
||||||
|
begin
|
||||||
|
declare v_uid bigint(22);
|
||||||
|
declare v int(10);
|
||||||
|
declare _done TINYINT(1) default 0;
|
||||||
|
declare cur_user cursor for select user_id, count(*) from changesets where user_id != '' group by user_id;
|
||||||
|
declare continue handler for not found set _done = 1;
|
||||||
|
open cur_user;
|
||||||
|
loop_xxx:loop
|
||||||
|
fetch cur_user into v_uid,v;
|
||||||
|
if _done=1 then
|
||||||
|
leave loop_xxx;
|
||||||
|
end if;
|
||||||
|
begin
|
||||||
|
update user_statuses set changesets_count = v where user_id = v_uid;
|
||||||
|
commit;
|
||||||
|
end;
|
||||||
|
end loop;
|
||||||
|
end;
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
create event if not exists e_test
|
||||||
|
on schedule every 1 day starts'2013_08_27 01:50:00'
|
||||||
|
on completion preserve
|
||||||
|
do call `sp_user_status_cursor`();
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
create procedure `sp_project_status_cursor`()
|
||||||
|
begin
|
||||||
|
declare v_uid bigint(22);
|
||||||
|
declare v int(10);
|
||||||
|
declare _done TINYINT(1) default 0;
|
||||||
|
declare cur_user cursor for select project_id,count(*) from (select project_id,repositories.id from repositories inner join changesets where repositories.id = changesets.repository_id)t group by project_id;
|
||||||
|
declare continue handler for not found set _done = 1;
|
||||||
|
open cur_user;
|
||||||
|
loop_xxx:loop
|
||||||
|
fetch cur_user into v_uid,v;
|
||||||
|
if _done=1 then
|
||||||
|
leave loop_xxx;
|
||||||
|
end if;
|
||||||
|
begin
|
||||||
|
update project_statuses set changesets_count = v where project_id = v_uid;
|
||||||
|
commit;
|
||||||
|
end;
|
||||||
|
end loop;
|
||||||
|
end;
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
create event if not exists e_project_status_test
|
||||||
|
on schedule every 1 day starts'2013_08_27 01:50:00'
|
||||||
|
on completion preserve
|
||||||
|
do call `sp_project_status_cursor`();
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
set global event_scheduler = on;
|
||||||
|
"
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
execute " drop procedure if exists `sp_user_status_cursor`;
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
drop event if exists e_test;
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
drop procedure if exists `sp_project_status_cursor`;
|
||||||
|
"
|
||||||
|
execute "
|
||||||
|
drop event if exists e_project_status_test;
|
||||||
|
"
|
||||||
|
end
|
||||||
|
end
|
33
db/schema.rb
33
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20130819020004) do
|
ActiveRecord::Schema.define(:version => 20130828004955) do
|
||||||
|
|
||||||
create_table "a_user_watchers", :force => true do |t|
|
create_table "a_user_watchers", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
|
@ -445,6 +445,23 @@ ActiveRecord::Schema.define(:version => 20130819020004) do
|
||||||
t.string "salt", :null => false
|
t.string "salt", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "permissions", :force => true do |t|
|
||||||
|
t.string "controller", :limit => 30, :default => "", :null => false
|
||||||
|
t.string "action", :limit => 30, :default => "", :null => false
|
||||||
|
t.string "description", :limit => 60, :default => "", :null => false
|
||||||
|
t.boolean "is_public", :default => false, :null => false
|
||||||
|
t.integer "sort", :default => 0, :null => false
|
||||||
|
t.boolean "mail_option", :default => false, :null => false
|
||||||
|
t.boolean "mail_enabled", :default => false, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "permissions_roles", :id => false, :force => true do |t|
|
||||||
|
t.integer "permission_id", :default => 0, :null => false
|
||||||
|
t.integer "role_id", :default => 0, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
|
||||||
|
|
||||||
create_table "praise_tread_caches", :force => true do |t|
|
create_table "praise_tread_caches", :force => true do |t|
|
||||||
t.integer "object_id", :null => false
|
t.integer "object_id", :null => false
|
||||||
t.string "object_type"
|
t.string "object_type"
|
||||||
|
@ -470,6 +487,12 @@ ActiveRecord::Schema.define(:version => 20130819020004) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "project_statuses", :force => true do |t|
|
||||||
|
t.integer "changesets_count"
|
||||||
|
t.integer "watchers_count"
|
||||||
|
t.integer "project_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "project_tags", :force => true do |t|
|
create_table "project_tags", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "tag_id"
|
t.integer "tag_id"
|
||||||
|
@ -648,6 +671,14 @@ ActiveRecord::Schema.define(:version => 20130819020004) do
|
||||||
|
|
||||||
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
|
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
|
||||||
|
|
||||||
|
create_table "user_statuses", :force => true do |t|
|
||||||
|
t.integer "changesets_count"
|
||||||
|
t.integer "watchers_count"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "user_tags", :force => true do |t|
|
create_table "user_tags", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "tag_id"
|
t.integer "tag_id"
|
||||||
|
|
Loading…
Reference in New Issue