2017-02-20 164 views
0

我已更新会议插件。在此插件更新会议时,它不会更新会议历史记录。 像我改变主题会议更新主题,但不更新历史问题。如何使用日记从Redmine插件添加历史记录

我的管理平台的配置如下

Environment: 
    Redmine version    3.3.1.stable 
    Ruby version     2.1.5-p273 (2014-11-13) [x86_64-linux] 
    Rails version     4.2.7.1 
    Environment     development 
    Database adapter    Mysql2 

我已经做了以下事项>

我的模型类

def init_journal(user, notes = "") 
    @current_journal ||= Journal.new(:journalized => self, :user => user, :notes => notes, :notify => false) 

    if new_record? 
     @current_journal.notify = false 
    else 
     @attributes_before_change = attributes.dup 
    end 
    @current_journal 
    end 

    def last_journal_id 
    if new_record? 
     nil 
    else 
     journals.maximum(:id) 
    end 
    end 

    # Returns a scope for journals that have an id greater than journal_id 
    def journals_after(journal_id) 
    scope = journals.reorder("#{Journal.table_name}.id ASC") 
    if journal_id.present? 
     scope = scope.where("#{Journal.table_name}.id > ?", journal_id.to_i) 
    end 
    scope 
    end 

    def create_journal 
    if @current_journal 
     # attributes changes 
     if @attributes_before_change 
     (Meeting.column_names - %w(id created_at updated_at)).each {|c| 
      before = @attributes_before_change[c] 
      after = send(c) 
      next if before == after || (before.blank? && after.blank?) 
      @current_journal.details << JournalDetail.new(:property => 'attr', 
                 :prop_key => c, 
                 :old_value => before, 
                 :value => after) 
     } 
     end 
     @current_journal.save 
     # reset current journal 
     init_journal @current_journal.user, @current_journal.notes 
    end 
    end 

和控制器类

def update_meeting_from_params 
    @edit_allowed = User.current.allowed_to?(:edit_meetings, @project) 
    @time_entry = TimeEntry.new(:meeting => @meeting, :project => @meeting.project) 
    @time_entry.attributes = params[:time_entry] 

    @meeting.init_journal(User.current) 

    meeting_attributes = params[:meeting] 
    @meeting.safe_attributes = meeting_attributes 
    end 

我得到以下错误。 http://prntscr.com/eb257g 请帮我

+0

哪个版本的管理平台? –

+0

它是最新版本。 我用我的环境更新了这个问题。 –

+0

和哪个会议插件? –

回答

1

你的日记对象(会议)应该有一个叫做journalized_attribute_names

尝试将其添加到您的模型(meeting.rb)方法:

# Returns the names of attributes that are journalized when updating the meeting 
def journalized_attribute_names 
    names = Meeting.column_names - %w(id created_on updated_on) 
    names 
end 
+0

是的,它的工作,但我给这样的另一个错误。 未定义的方法'custom_field_values'为#<会议:0x00000005761600> –

+0

http://prntscr.com/ebhaun –

+0

你应该看看“问题”模型,看看这些方法是如何实现的。然后,您只需调整并将其添加到您的自定义模型(会议)。 – Nanego