2011-10-13 16:55:03 +01:00
|
|
|
class Group < ActiveRecord::Base
|
|
|
|
belongs_to :owner, :class_name => 'User'
|
2011-10-26 21:57:51 +01:00
|
|
|
|
2011-10-18 16:00:06 +01:00
|
|
|
has_many :own_projects, :as => :owner, :class_name => 'Project'
|
2011-10-13 16:55:03 +01:00
|
|
|
|
2011-11-19 11:41:11 +00:00
|
|
|
has_many :relations, :as => :object, :dependent => :destroy
|
2011-10-13 16:55:03 +01:00
|
|
|
has_many :objects, :as => :target, :class_name => 'Relation'
|
|
|
|
has_many :targets, :as => :object, :class_name => 'Relation'
|
|
|
|
|
2011-10-16 21:39:45 +01:00
|
|
|
has_many :members, :through => :objects, :source => :object, :source_type => 'User', :autosave => true
|
2011-10-13 16:55:03 +01:00
|
|
|
has_many :projects, :through => :targets, :source => :target, :source_type => 'Project', :autosave => true
|
|
|
|
has_many :platforms, :through => :targets, :source => :target, :source_type => 'Platform', :autosave => true
|
|
|
|
has_many :repositories, :through => :targets, :source => :target, :source_type => 'Repository', :autosave => true
|
2011-10-16 21:39:45 +01:00
|
|
|
|
2011-11-15 21:58:27 +00:00
|
|
|
validates :name, :owner, :presence => true
|
2011-11-24 21:46:19 +00:00
|
|
|
validates :uname, :presence => true, :uniqueness => {:case_sensitive => false}, :format => { :with => /^[a-z0-9_]+$/ }
|
2011-10-26 21:57:51 +01:00
|
|
|
validate { errors.add(:uname, :taken) if User.where('uname LIKE ?', uname).present? }
|
|
|
|
|
|
|
|
attr_readonly :uname
|
|
|
|
|
|
|
|
delegate :ssh_key, :to => :owner
|
2011-10-18 16:00:06 +01:00
|
|
|
|
2011-11-30 15:27:19 +00:00
|
|
|
after_create :add_owner_to_members
|
|
|
|
|
2011-11-24 21:46:19 +00:00
|
|
|
include Modules::Models::PersonalRepository
|
2011-12-08 14:03:56 +00:00
|
|
|
# include Modules::Models::Owner
|
2011-11-30 15:27:19 +00:00
|
|
|
|
|
|
|
protected
|
|
|
|
def add_owner_to_members
|
|
|
|
Relation.create_with_role(self.owner, self, 'admin')
|
|
|
|
# members << self.owner if !members.exists?(:id => self.owner.id)
|
|
|
|
end
|
2011-10-13 16:55:03 +01:00
|
|
|
end
|