2016-06-12 3 views
0

ich arbeite durch Michael Hartl des Rails-Tutorial und wenn ich meine Testsuite betreibe ich Fehler wie diese sehe:Deprecation Warnung in Rails 4 Anwendung (Hartl Tutorial)

DEPRECATION WARNING: You attempted to assign a value which is not explicitly 
`true` or `false` to a boolean column. Currently this value casts to `false`. 
This will change to match Ruby's semantics, and will cast to `true` in Rails 
5. If you would like to maintain the current behavior, you should explicitly 
handle the values you would like cast to `false`. (called from remember at 
.../RoR_Tutorial/sample_app/app/models/user.rb:28) 

DEPRECATION WARNING: You attempted to assign a value which is not explicitly 
`true` or `false` to a boolean column. Currently this value casts to `false`. 
This will change to match Ruby's semantics, and will cast to `true` in Rails 
5. If you would like to maintain the current behavior, you should explicitly 
handle the values you would like cast to `false`. (called from update at  
...RoR_Tutorial/sample_app/app/controllers/users_controller.rb:40) 

Es scheint, über die Anrufe, wütend zu sein zu update_attribute wie folgt aus:

def remember 
    self.remember_token = User.new_token 
    update_attribute(:remember_digest, User.digest(remember_token)) 
end 

oder

def update 
    @user = User.find(params[:id]) 
    if @user.update_attributes(user_params) 
    flash[:success] = 'Profile Updated' 
    redirect_to @user 
    else 
    render 'edit' 
    end 
end 

... kann jemand klären, was diese Warnung mir zu sagen versucht?

Antwort

0

So stellte sich heraus, dass ich einen Fehler in meiner YAML-Datei hatte, die zum Erstellen meiner Testbenutzer verwendet wurde.

lana: 
    name: Lana Kane 
    email: [email protected] 
    password_digest: <%= User.digest('password') %> 
    activated: true, 
    activated_at: <%= Time.zone.now %> 

... beachten Sie, dass nervtötende Komma am Ende der activated: Linie. Das bedeutete, dass ich den Wert nicht wirklich auf den Wert true gesetzt hatte (erraten, dass das als eine Folge von 5 Zeichen betrachtet wird?).

die YAML zu

lana: 
    name: Lana Kane 
    email: [email protected] 
    password_digest: <%= User.digest('password') %> 
    activated: true 
    activated_at: <%= Time.zone.now %> 

... (kein Komma am Ende der activated Linie) der Fehler weggeht Durch Korrektur.

0

Es scheint, dass Ihre Datenbank einige Spalten vom Typ boolean hat, was bedeutet, dass ihre Werte auf true oder beschränkt sind. Gemäß den veralteten Warnungen setzen Ihre Anrufe auf update_attributes und update_attribute in Ihrem User Modell und users_controller die Werte dieser Attribute auf etwas anderes als true oder false (obwohl es auf eine dieser beiden Optionen sowieso gegossen wird).

Solange Sie ein Tutorial sind folgende, es gibt nichts besorgt zu sein scheint zu: Sie, dass der algorighm der Transformation verschiedenen Werte zu true oder false gewarnt habest in der bevorstehenden Veröffentlichung von Rails geändert werden soll .

Obwohl Hartls Tutorial ein wenig veraltet sein mag, scheint es mir immer noch ein wenig seltsam, diese Art Castings zu sehen. Möglicherweise möchten Sie Ihre schema.rb und Migrationsdateien mit denen, die im Buch aufgeführt sind, überprüfen, um sicherzustellen, dass Ihre Einrichtung absolut korrekt ist.

Verwandte Themen