ich ein Modell user.rb haben (es ist ein Activerecord :: Base, nicht sicher, ob seine relevant für die Diskussion)Ruby on Rails überwiegendes gleich
In bestimmten Ansichten, vergleiche ich zwei Benutzern über:
<% if current_user == user %>
Das Ergebnis ist unbestimmbar (manchmal ist das Ergebnis wahr, und manchmal ist es falsch), und ich bin mir nicht sicher warum.
Wenn ich schalten Sie ihn auf
<% if current_user.id == user.id %>
Es funktioniert wie erwartet. Aber dann muss ich den Fall behandeln, in dem die Benutzer null sein können.
Meine Frage ist, was ist hier los?
Warum schlägt user1 == user2 hier fehl?
Soll ich zwingende == sein, oder
Soll ich eine alternative Methode wie gleich ?, sein mit === oder eql?
Sollte nicht die Tatsache, dass user.rb ist ein ActiveRecord :: Base Mean == standardmäßig vergleicht die ID-Felder bereits?
Vielen Dank für den Schnipsel, auf jeden Fall beruhigend zu betrachten. Da es nur ein direkter Vergleich ist, ist es schwer, kurz relevant zu geben, was ich in der ursprünglichen Frage enthalten habe ... – tstyle
@tstyle dies in Ihrem Code und lassen Sie uns wissen, was Sie bekommen: wenn current_user! = Benutzer; puts user.inspect; puts current_user.inspect; Ende – DanSingerman
Hey @DanSingerman sorry, ich habe es einfach total vergessen über diese Frage zurückkommen. Gelegentlich funktionierte es durch Überschreiben == in dem Benutzerobjekt mit dem obigen Code. Vielen Dank. – tstyle