Ruby Forum Rails Germany > Problem mit acts_as_versioned

Posted by Heinzelmann Daniel (Guest)
on 15.08.2008 08:06
(Received via mailing list)
Hallo,



ich habe ein Problem mit dem acts_as_versioned Plugin. Und zwar möchte 
ich von einer Tabelle die "changes" heist jeweils die alten Versionen 
eines Datensatzes in einer externen Tabelle (change_versions) ablegen 
falls ein Datensatz editiert wird. Dies sollte ja mit dem 
acts_as_versioned Plugin möglich sein. Über die in dem Plugin 
hinterlegte Migration habe ich die neue "change_versions" Tabelle 
erstellt. Dies hat auch wunderbar funktioniert. Daraufhin habe ich in 
dem Model der zu versionierenden Tabelle "acts_as_versioned" 
eingetragen. Auch die has_many und belongs_to Beziehungen zwischen den 
beiden Tabellen sind in den jeweiligen Model's eingetragen. Leider 
bekomme ich jetzt beim abspeichern eines abgeänderten Datensatzes eine 
Fehlermeldung (NoMethodError in ChangesController#update - undefined 
method `changed?' for #<Change:0x4b12458>). Die update Funktion im 
Controller schaut wie folgt aus:



def update

    @change = Change.find(params[:id])



    respond_to do |format|

      if @change.update_attributes(params[:change])

        flash[:notice] = 'Change was successfully updated.'

        format.html { redirect_to(@change) }

        format.xml  { head :ok }

      else

        format.html { render :action => "edit" }

        format.xml  { render :xml => @change.errors, :status => 
:unprocessable_entity }

      end

    end

  end



Kennt jemand von euch diesen Fehler? Oder hat jemand schon mit dem 
acts_as_versioned plugin gearbeitet und kann mir sagen wie dieses 
richtig eingebunden wird (die Anleitungen die ich bisher über google 
gefunden habe sind alle leider nicht sehr ausführlich...)?





Schon mal vielen Dank für eure Hilfe!



Viele Grüße

Daniel Heinzelmann
Posted by Garret Alfert (Guest)
on 15.08.2008 12:08
(Received via mailing list)
Hallo Daniel,

benutzt du das aktuelle Rails 2.1? In dieser Version wurde die Dirty 
Objects
Funktionalität [1] eingeführt. Soviel ich weiß, nutzt acts_as_versioned 
in
der aktuellsten Version dieses Feature und ist nicht abwärtskompatibel.

Gruß,
Garret Alfert

[1]
http://ryandaigle.com/articles/2008/3/31/what-s-new-in-edge-rails-dirty-objects



2008/8/15 Heinzelmann Daniel <Daniel.Heinzelmann@escad.de>
Posted by Heinzelmann Daniel (Guest)
on 15.08.2008 12:53
(Received via mailing list)
Hallo Garret,



ich benutze Instant Rails. Das hatte noch das Rails 2.0.2 dabei. Nach 
dem Update auf 2.1 funktioniert acts_as_versioned nun. Vielen Dank!!!





Grüße



Daniel







________________________________

Von: rubyonrails-ug-bounces@headflash.com 
[mailto:rubyonrails-ug-bounces@headflash.com] Im Auftrag von Garret 
Alfert
Gesendet: Freitag, 15. August 2008 12:08
An: rubyonrails-ug@headflash.com
Betreff: Re: [Rubyonrails-ug] Problem mit acts_as_versioned



Hallo Daniel,

benutzt du das aktuelle Rails 2.1? In dieser Version wurde die Dirty 
Objects Funktionalität [1] eingeführt. Soviel ich weiß, nutzt 
acts_as_versioned in der aktuellsten Version dieses Feature und ist 
nicht abwärtskompatibel.

Gruß,
Garret Alfert

[1] 
http://ryandaigle.com/articles/2008/3/31/what-s-new-in-edge-rails-dirty-objects




2008/8/15 Heinzelmann Daniel <Daniel.Heinzelmann@escad.de>

 Hallo,



ich habe ein Problem mit dem acts_as_versioned Plugin. Und zwar möchte 
ich von einer Tabelle die "changes" heist jeweils die alten Versionen 
eines Datensatzes in einer externen Tabelle (change_versions) ablegen 
falls ein Datensatz editiert wird. Dies sollte ja mit dem 
acts_as_versioned Plugin möglich sein. Über die in dem Plugin 
hinterlegte Migration habe ich die neue "change_versions" Tabelle 
erstellt. Dies hat auch wunderbar funktioniert. Daraufhin habe ich in 
dem Model der zu versionierenden Tabelle "acts_as_versioned" 
eingetragen. Auch die has_many und belongs_to Beziehungen zwischen den 
beiden Tabellen sind in den jeweiligen Model's eingetragen. Leider 
bekomme ich jetzt beim abspeichern eines abgeänderten Datensatzes eine 
Fehlermeldung (NoMethodError in ChangesController#update - undefined 
method `changed?' for #<Change:0x4b12458>). Die update Funktion im 
Controller schaut wie folgt aus:



def update

    @change = Change.find(params[:id])



    respond_to do |format|

      if @change.update_attributes(params[:change])

        flash[:notice] = 'Change was successfully updated.'

        format.html { redirect_to(@change) }

        format.xml  { head :ok }

      else

        format.html { render :action => "edit" }

        format.xml  { render :xml => @change.errors, :status => 
:unprocessable_entity }

      end

    end

  end



Kennt jemand von euch diesen Fehler? Oder hat jemand schon mit dem 
acts_as_versioned plugin gearbeitet und kann mir sagen wie dieses 
richtig eingebunden wird (die Anleitungen die ich bisher über google 
gefunden habe sind alle leider nicht sehr ausführlich...)?





Schon mal vielen Dank für eure Hilfe!



Viele Grüße

Daniel Heinzelmann