lib/redmine_rest/models/issue.rb in redmine_rest-0.2.0 vs lib/redmine_rest/models/issue.rb in redmine_rest-0.3.0

- old
+ new

@@ -1,10 +1,11 @@ require 'active_resource' require_relative 'user' require_relative 'project' require_relative 'version' +require_relative 'relation' require_relative 'collections/issue' module RedmineRest module Models # @@ -16,8 +17,42 @@ has_one :author, class_name: User has_one :assigned_to, class_name: User has_one :project, class_name: Project has_one :version, class_name: Version + has_one :parent, class_name: Issue + has_many :children, class_name: Issue + has_many :watchers, class_name: User + has_many :relations, class_name: Relation + + # + # Adds journals, relations, children and watchers to request. + # + # Be careful, even if issue has watchers, it won't be loaded, + # because REST API can load them only after v2.3.0 (see Redmine docs) + # + def self.find(what, options = {}) + options[:params] = {} unless options[:params] + params = options[:params] + + if params[:include] + params[:include] += ',journals,relations,children,watchers' + else # doubling is not bad + params[:include] = 'journals,relations,children,watchers' + end + + super(what, options) + end + + # + # Methods for necessery attributes. + # + # I guess it's equal to `.<attribute>?` + # + [:author, :assigned_to, :project, :version, :children, :watchers, :relations, :parent].each do |attr| + define_method(attr) do + attributes[attr] + end + end end end end