OSDN Git Service

Merge branch 'state-machine' of https://github.com/Undev/gitlabhq into Undev-state...
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 19 Feb 2013 09:01:19 +0000 (11:01 +0200)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 19 Feb 2013 09:01:19 +0000 (11:01 +0200)
Conflicts:
app/models/issue.rb
app/models/merge_request.rb

1  2 
app/models/issue.rb
app/models/merge_request.rb
spec/factories.rb

@@@ -24,13 -25,24 +25,29 @@@ class Issue < ActiveRecord::Bas
  
    acts_as_taggable_on :labels
  
 -
 -
 -  def self.open_for(user)
 -    opened.assigned(user)
 -  end
 +  class << self
 +    def cared(user)
 +      where('assignee_id = :user', user: user.id)
 +    end
 +
 +    def open_for(user)
 +      opened.assigned(user)
 +    end
 +  end
++
+   state_machine :state, initial: :opened do
+     event :close do
+       transition [:reopened, :opened] => :closed
+     end
+     event :reopen do
+       transition closed: :reopened
+     end
+     state :opened
+     state :reopened
+     state :closed
+   end
  end
@@@ -43,23 -64,18 +64,28 @@@ class MergeRequest < ActiveRecord::Bas
    validates :target_branch, presence: true
    validate :validate_branches
  
+   scope :merged, -> { with_state(:merged) }
  
 -  def self.find_all_by_branch(branch_name)
 -    where("source_branch LIKE :branch OR target_branch LIKE :branch", branch: branch_name)
 -  end
 +  class << self
++    def find_all_by_branch(branch_name)
++      where("source_branch LIKE :branch OR target_branch LIKE :branch", branch: branch_name)
++    end
++
 +    def cared(user)
 +      where('assignee_id = :user OR author_id = :user', user: user.id)
 +    end
  
 -  def self.find_all_by_milestone(milestone)
 -    where("milestone_id = :milestone_id", milestone_id: milestone)
 +    def find_all_by_branch(branch_name)
 +      where("source_branch LIKE :branch OR target_branch LIKE :branch", branch: branch_name)
 +    end
 +
 +    def find_all_by_milestone(milestone)
 +      where("milestone_id = :milestone_id", milestone_id: milestone)
 +    end
    end
  
-   def human_state
-     states = {
+   def human_merge_status
+     merge_statuses = {
        CAN_BE_MERGED =>  "can_be_merged",
        CANNOT_BE_MERGED => "cannot_be_merged",
        UNCHECKED => "unchecked"
Simple merge