Sha256: 55e26152071feb17b439431e88a2ef0129ed2b29bb9ad3fc7df434aadad6260c

Contents?: true

Size: 1.18 KB

Versions: 16

Compression:

Stored size: 1.18 KB

Contents

class Role < ActiveRecord::Base

  belongs_to :user
  belongs_to :project

  validates :user_id, presence: true
  validates :project, presence: true
  validates :name, presence: true, inclusion: {in: Houston.config.project_roles, message: "\"%{value}\" is unknown. It must be #{Houston.config.project_roles.to_sentence(last_word_connector: ", or ")}"}


  Houston.config.project_roles.each do |role|
    method_name = role.downcase.gsub(' ', '_')
    class_eval <<-RUBY
    def #{method_name}?
      name == "#{role}"
    end

    def self.#{method_name.pluralize}
      where(name: "#{role}")
    end
    RUBY
  end


  class << self

    def participants
      where arel_table[:name].not_eq("Follower")
    end

    def to_users
      User.where(id: all.select(:user_id))
    end

    def to_projects
      Project.where(id: all.select(:project_id))
    end

    def for_user(user_or_id)
      user_id = user_or_id.is_a?(User) ? user_or_id.id : user_or_id
      where user_id: user_id
    end

    def for_project(project_or_id)
      project_id = project_or_id.is_a?(Project) ? project_or_id.id : project_or_id
      where project_id: project_id
    end

    def any?
      count > 0
    end

  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
houston-core-0.7.0 app/models/role.rb
houston-core-0.7.0.beta4 app/models/role.rb
houston-core-0.7.0.beta3 app/models/role.rb
houston-core-0.7.0.beta2 app/models/role.rb
houston-core-0.7.0.beta app/models/role.rb
houston-core-0.6.3 app/models/role.rb
houston-core-0.6.2 app/models/role.rb
houston-core-0.6.1 app/models/role.rb
houston-core-0.6.0 app/models/role.rb
houston-core-0.5.6 app/models/role.rb
houston-core-0.5.5 app/models/role.rb
houston-core-0.5.4 app/models/role.rb
houston-core-0.5.3 app/models/role.rb
houston-core-0.5.2 app/models/role.rb
houston-core-0.5.1 app/models/role.rb
houston-core-0.5.0 app/models/role.rb