2012-02-18 36 views
0

我目前正在编写一个插件,通过http post请求创建一个新问题。我目前在创建和保存新问题方面存在问题。每次我调用issue.save时,它都会返回false。我希望有人能指引我朝着正确的方向前进。谢谢你在前进Redmine Issue创建代码

这里是我目前拥有的代码:

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 
+2

你确定你要保存的发行对象为有效之前添加如下代码?你可以通过调用'issue.valid?'方法来检查它,或者保存它而不需要调用save(false)。您可以只检查验证消息:issue.errors.full_messages afeter保存。 – Kuba 2012-02-18 22:57:04

+0

为什么要重新发明轮子? Redmine已经有了一个允许创建问题的REST API。以下是API文档的问题:http://www.redmine.org/projects/redmine/wiki/Rest_Issues – 2012-02-18 23:14:31

+0

我需要将异常报告发布到redmine的功能。一旦redmine收到报告,它需要创建一个新问题,或更新现有问题(增加计数和其他信息)。客户端应用程序不知道正在生成的文件是否为新文件。 – 2012-02-19 02:55:05

回答

0

谢谢你所有的快速回复,他们帮助我显着。

调用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 
1

出现一些错误!检查issue.errors检查其中:

Rails.logger.info issue.errors.inspect 
0

您可以创建问题(和做很多其他的事情),使用REST API的管理平台。