Код создания задачи Redmine

В настоящее время я пишу плагин, который создает новую проблему через HTTP-запрос. В настоящее время у меня возникают проблемы с созданием и сохранением новой проблемы. Каждый раз, когда я вызываю issue.save, он возвращает false. Я надеялся, что кто-то укажет мне правильное направление. заранее спасибо

Вот код, который у меня сейчас есть:

issue = Issue.new
issue.tracker = Tracker.find_by_name("Bug")
issue.subject = params[:subject]
issue.description = params[:description]
issue.project = Project.find_by_name(params[:project])
issue.start_date = Time.now.localtime.strftime("%Y-%m-%d")
issue.priority = IssuePriority.find_by_name("Normal")
issue.author = User.find_by_mail("[email protected]")
issue.status = IssueStatus.find_by_name("New")
issue.save

person Rick Barrette    schedule 18.02.2012    source источник
comment
Вы уверены, что объект задачи, который вы собираетесь сохранить, действителен? Вы можете проверить это, вызвав метод issue.valid?, или сохранить его без проверки, вызвав save(false). Вы можете просто проверить сообщения проверки: issue.errors.full_messages после сохранения.   -  person Kuba    schedule 19.02.2012
comment
Зачем изобретать велосипед? Redmine уже имеет REST API, который позволяет создавать задачи. Вот документация API проблем: redmine.org/projects/redmine/wiki/Rest_Issues   -  person Mark Thomas    schedule 19.02.2012
comment
Мне нужна возможность опубликовать отчет об исключении в redmine. Как только redmine получит отчет, ему необходимо либо создать новую задачу, либо обновить существующую (увеличить количество и другую информацию). Клиентское приложение не знает, является ли файл отчета новым или нет.   -  person Rick Barrette    schedule 19.02.2012


Ответы (3)


Произошла какая-то ошибка! Изучите issue.errors, чтобы проверить, какие из них:

Rails.logger.info issue.errors.inspect
person Andriy Lesyuk    schedule 18.02.2012

Вы можете создавать задачи (и делать многое другое) в Redmine, используя REST API.

person demas    schedule 19.02.2012

Спасибо за все ваши быстрые ответы, они мне очень помогли.

После звонка issue.errors.full_messages я обнаружил, что не могу сохранить задачу, потому что обязательные настраиваемые поля не установлены.

Я добавил следующий код перед вызовом issue.save

  issue.custom_values = [
    create_custom_value(CustomField.find_by_name("StackTrace").id, params[:stackTrace]),
    ... more custom values ...
  ]

также вот мой метод create_custom_value

# returns a new custom value
def create_custom_value(field_id, value)
  custom_value = CustomValue.new
  custom_value.custom_field_id = field_id
  custom_value.value = value
  custom_value.customized_type = "Issue"
  return custom_value
end
person Rick Barrette    schedule 19.02.2012