2017-02-20 6 views
0

J'ai mis à jour le plugin de réunion. dans ce plugin lors de la mise à jour de la réunion, il ne met pas à jour l'historique des réunions. comme je change le sujet pour le rencontrer mettre à jour le sujet, mais ne pas mettre à jour l'histoire comme problème.Comment ajouter un élément d'historique à partir du plugin Redmine en utilisant le journal

ma configuration de Redmine est comme suit

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 

Je l'ai fait suivantes->

pour ma classe de modèle

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 

et pour la classe contrôleur

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 

Je reçois erreur suivante. http://prntscr.com/eb257g s'il vous plaît aidez-moi

+0

Quelle est la version Redmine? –

+0

c'est la dernière version. Je mets à jour la question avec mon environnement. –

+0

Et quel plugin de réunions? –

Répondre

1

Votre objet journalisé (Réunion) devrait avoir une méthode appelée journalized_attribute_names

Essayez d'ajouter à votre modèle (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

Oui ça marche mais je donne une autre erreur comme celle-ci. méthode non définie 'custom_field_values ​​'pour #

+0

http://prntscr.com/ebhaun –

+0

Vous devriez regarder le modèle" Issue "et voir comment ces méthodes sont implémentées. Ensuite, il suffit de les adapter et de les ajouter à votre modèle personnalisé (réunion). – Nanego