rubygems/rubygems.org

View on GitHub
app/models/ownership_call.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class OwnershipCall < ApplicationRecord
  belongs_to :rubygem
  belongs_to :user
  has_many :ownership_requests, -> { opened }, dependent: :destroy, inverse_of: :ownership_call

  validates :note, length: { maximum: Gemcutter::MAX_TEXT_FIELD_LENGTH }
  validates :rubygem_id, :user_id, :status, :note, presence: true
  validates :rubygem_id, uniqueness: { conditions: -> { opened }, message: "can have only one open ownership call" }

  delegate :name, to: :rubygem, prefix: true
  delegate :display_handle, to: :user, prefix: true

  enum status: { opened: true, closed: false }

  def close
    ownership_requests.close_all
    update(status: :closed)
  end
end