merge_request.rb 1.6 KB
Newer Older
D
Dmitriy Zaporozhets 已提交
1 2 3 4
class MergeRequest < ActiveRecord::Base
  belongs_to :project
  belongs_to :author, :class_name => "User"
  belongs_to :assignee, :class_name => "User"
5
  has_many :notes, :as => :noteable, :dependent => :destroy
D
Dmitriy Zaporozhets 已提交
6 7

  attr_protected :author, :author_id, :project, :project_id
8
  attr_accessor :author_id_of_changes
D
Dmitriy Zaporozhets 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

  validates_presence_of :project_id
  validates_presence_of :assignee_id
  validates_presence_of :author_id
  validates_presence_of :source_branch
  validates_presence_of :target_branch

  delegate :name,
           :email,
           :to => :author,
           :prefix => true

  delegate :name,
           :email,
           :to => :assignee,
           :prefix => true

  validates :title,
            :presence => true,
            :length   => { :within => 0..255 }

  scope :opened, where(:closed => false)
  scope :closed, where(:closed => true)
  scope :assigned, lambda { |u| where(:assignee_id => u.id)}

  def new?
    today? && created_at == updated_at
  end
D
Dmitriy Zaporozhets 已提交
37 38 39

  def diffs
    commits = project.repo.commits_between(target_branch, source_branch).map {|c| Commit.new(c)}
40
    diffs = project.repo.diff(commits.first.prev_commit.id, commits.last.id) rescue []
D
Dmitriy Zaporozhets 已提交
41 42 43 44 45
  end

  def last_commit
    project.commit(source_branch)
  end
D
Dmitriy Zaporozhets 已提交
46
end
V
Valery Sizov 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
# == Schema Information
#
# Table name: merge_requests
#
#  id            :integer         not null, primary key
#  target_branch :string(255)     not null
#  source_branch :string(255)     not null
#  project_id    :integer         not null
#  author_id     :integer
#  assignee_id   :integer
#  title         :string(255)
#  closed        :boolean         default(FALSE), not null
#  created_at    :datetime
#  updated_at    :datetime
#