Как вставить новые отношения в Redmine

Я пытаюсь найти синтаксис для вставки новой связи между проблемами в Redmine с использованием Ruby.

Код, который я пробовал:

require 'rubygems'
require 'active_resource'
class Issue < ActiveResource::Base
     self.site = '[the site]'
     self.user = '[the user]'
     self.password = '[the password]' #not hard coded
     self.format = :json #I've had issues with Issue.find(i) without explicitly stating the format
end

class IssueRelation < ActiveResource::Base
     self.site = '[the site]'
     self.user = '[the user]'
     self.password = '[the password]' #not hard coded
     self.format = :json #I've had issues with Issue.find(i) without explicitly stating the format
end

issue1 = Issue.find(1)
issue2 = Issue.find(2)

puts issue1.id
puts issue2.id

relation = IssueRelation.new(
    :issue => issue1,
    :issue_to => issue2,
    :relation_type => 'relates'
    )

if relation.save
    puts relation.id
else
    puts relation.errors.full_message
end

Вывод, который я возвращаю:

1
2
...'handle_response': Failed. Response code = 404. Response Message = not found.

Вывод предполагает, что Проблемы 1 и 2 были успешно найдены, но имя, которое я использую для отношения, недействительно, поэтому 404 не найдено.

Каков правильный синтаксис для создания отношения в API Redmine, учитывая, что я обнаружил две проблемы, которые он свяжет?


person Centimane    schedule 21.01.2015    source источник


Ответы (1)


Я нашел решение этой проблемы.

Вместо того, чтобы использовать объект IssueRelation, вам нужно использовать объект Relation.

Также перед использованием объекта Relation необходимо изменить сайт.

Relation.site="[the site]/issues/#{issue1.id}/"
rel = Relation.new(
       :issue_to_id => issue2.id,
       :relation_type => 'relates'
      )
rel.save

Вероятно, вы могли бы поместить :site в Relation.new вместо того, чтобы менять его для класса.

person Centimane    schedule 10.06.2015