Sha256: d65240d7039ed23a77a006d14a4ce5956025367f85040f03ffa52fd2bfc30a56

Contents?: true

Size: 1.18 KB

Versions: 27

Compression:

Stored size: 1.18 KB

Contents

class PopulateRoles < ActiveRecord::Migration
  def up
    developer_ids = User.where(role: "Developer").pluck(:id)
    tester_ids = User.where(role: "Tester").pluck(:id)
    participant_ids = developer_ids + tester_ids

    Project.find_each do |project|
      maintainer_ids = users_that_maintain(project)
      follower_ids = users_that_follow(project)

      maintainer_ids.each do |user_id|
        project.add_teammate user_id, "Maintainer"
      end

      (developer_ids - maintainer_ids).each do |user_id|
        project.add_teammate user_id, "Contributor"
      end

      tester_ids.each do |user_id|
        project.add_teammate user_id, "Tester"
      end

      (follower_ids - participant_ids).each do |user_id|
        project.add_teammate user_id, "Follower"
      end
    end
  end

  def down
    Role.delete_all
  end

  def users_that_follow(project)
    sql = "SELECT DISTINCT user_id FROM user_notifications WHERE project_id=#{project.id}"
    User.connection.select_values(sql).map(&:to_i)
  end

  def users_that_maintain(project)
    sql = "SELECT DISTINCT user_id FROM projects_maintainers WHERE project_id=#{project.id}"
    User.connection.select_values(sql).map(&:to_i)
  end

end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
houston-core-0.9.2 db/migrate/20130407200624_populate_roles.rb
houston-core-0.9.1 db/migrate/20130407200624_populate_roles.rb
houston-core-0.9.0 db/migrate/20130407200624_populate_roles.rb
houston-core-0.9.0.rc1 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.4 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.3 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.2 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.1 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.0 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.0.pre2 db/migrate/20130407200624_populate_roles.rb
houston-core-0.8.0.pre db/migrate/20130407200624_populate_roles.rb
houston-core-0.7.0 db/migrate/20130407200624_populate_roles.rb
houston-core-0.7.0.beta4 db/migrate/20130407200624_populate_roles.rb
houston-core-0.7.0.beta3 db/migrate/20130407200624_populate_roles.rb
houston-core-0.7.0.beta2 db/migrate/20130407200624_populate_roles.rb
houston-core-0.7.0.beta db/migrate/20130407200624_populate_roles.rb
houston-core-0.6.3 db/migrate/20130407200624_populate_roles.rb
houston-core-0.6.2 db/migrate/20130407200624_populate_roles.rb
houston-core-0.6.1 db/migrate/20130407200624_populate_roles.rb
houston-core-0.6.0 db/migrate/20130407200624_populate_roles.rb