issue.rb
826 Bytes
class Issue
include ActiveModel::Model
attr_accessor :problem, :user, :title, :body
def intialize(problem: nil, user: nil, title: nil, body: nil)
@problem, @user, @title, @body = problem, user, title, body
end
def issue_tracker
problem.app.issue_tracker
end
def save
if issue_tracker
issue_tracker.tracker.errors.each do |k, err|
errors.add k, err
end
return false if errors.present?
url = issue_tracker.create_issue(title, body, user: user.as_document)
problem.update_attributes(issue_link: url, issue_type: issue_tracker.tracker.class.label)
else
errors.add :base, "This app has no issue tracker setup."
end
errors.empty?
rescue => ex
errors.add :base, "There was an error during issue creation: #{ex.message}"
false
end
end