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
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"