Sha256: db4aa3231d8a6c4483f91d6a785490fab62019cf16e9db03537986bea2ae56ca
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
# == Schema Information # # Table name: project_users # # id :integer not null, primary key # project_id :integer not null # user_id :integer not null # role :string(255) not null # created_at :datetime # updated_at :datetime # class ProjectUser < ActiveRecord::Base ROLES = %w(owner collaborator) belongs_to :project belongs_to :user validates :role, presence: true, inclusion: { in: ROLES } validates :project, presence: true validates :user, presence: true, uniqueness: { scope: :project } validate :one_owner, on: :update, unless: :org_relation? def destroy raise OnlyProjectOwner if only_owner? && !org_relation? super end private def org_relation? project.organizations.present? end def one_owner if (role != "owner" && role_was == "owner" && one_owner?) raise OnlyProjectOwner end end def only_owner? role == "owner" && one_owner? end def one_owner? project.project_users.map(&:role).reject {|r| r != "owner"}.length <= 1 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
self_systeem-0.1.0 | test/dummy_app/app/models/project_user.rb |