2012-02-18 8 views
0

現在、私はプラグインを作成しています。これは、http投稿リクエストを介して新しい問題を作成しています。私は現在、新しい問題の作成と保存に関する問題を抱えています。 issue.saveを呼び出すたびに、falseを返します。誰かが私を正しい方向に向けることを望んでいました。ここでは、事前Redmine Issue Creation Code

にありがとう私は現在持っているコードです:

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 save。 – Kuba

+0

なぜホイールを再発明するのですか? Redmineには既に問題の作成を可能にするREST APIがあります。ここに問題のAPIドキュメントがあります:http://www.redmine.org/projects/redmine/wiki/Rest_Issues –

+0

私はredmineに例外レポートを掲示する能力が必要です。 redmineがレポートを受け取ったら、新しいissueを作成するか、既存のissueを更新する(countを増やすなどの情報を増やす)必要があります。クライアントサイドアプリケーションは、ファイルであるレポートが新規であるかどうかを知らない。 –

答えて

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

は、いくつかのエラーが発生しました!

Rails.logger.info issue.errors.inspect 
0

あなたが問題を作成することができます(および他の多くのことを行う)REST APIを使ってRedmineの中で:これをチェックするissue.errorsを調べます。