2017-03-20 1 views
0

Ich bekomme einen NoMethodError beim Versuch, meine "not_coworker_friend" oder "Coworker_friend" -Methode aufzurufen. Ich arbeite in Ruby MVC. Dies ist mein aktueller Code, geschrieben Da es erzeugt keine Fehler:Ruby Undefined Method (im Modell)

class EmergencyTrip < ActiveRecord::Base 

belongs_to :user 

has_attached_file :receipt 
validates_attachment_presence :receipt 

validates_presence_of :trip_cost, :if => :not_coworker_friend 
validates_presence_of :phone_of_person, :if => :coworker_friend 

def not_coworker_friend 
    (self.ride_home_service == "co-worker/friend") ? false : true 
end 

def coworker_friend 
    (self.ride_home_service == "co-worker/friend") ? true : false 
end 

end 

Mein Ziel ist es, nur den Empfang zu bestätigen, wenn „not_coworker_friend“ == true.

Linien 5 & 6 sollte sein:

... 
has_attached_file :receipt, :if => :not_coworker_friend 
validates_attachment_presence :receipt, :if => :not_coworker_friend 
... 

Hinzufügen des ": if => not_coworker_friend" auf jene Linien erzeugt ein NoMethodError (nicht definierte Methode `nennen‘ für: not_coworker_friend: Symbol) :, auch dort obwohl wird kein Fehler für die Zeilen 8 ausgegeben & 9. Warum wirft dies nur selektiv einen Fehler? Und wie kann ich das korrigieren? diese

+0

definieren Verfahren vor dem Einsatz. Nur für den Fall. –

+0

Ich änderte, so dass die Methode vor der Verwendung definiert wurde, aber das hat nicht funktioniert. Es gibt keinen Fehler, wenn es in den Zeilen 8 und 9 unabhängig aufgerufen wird, daher muss es definiert werden. –

+0

Sollte so funktionieren. Vielleicht Konsole neu laden? aber bitte lesen Sie auf boolean: https://en.wikipedia.org/wiki/Boolean_data_type – Fallenhero

Antwort

2

versuchen:

class EmergencyTrip < ActiveRecord::Base 

    belongs_to :user 

    has_attached_file :receipt, :if => Proc.new{|f| f.ride_home_service != "co-worker/friend"} 
    validates_attachment_presence :receipt, :if => Proc.new{|f| f.ride_home_service != "co-worker/friend"} 
end 
+0

@objektiv C Haben Sie das obige versucht. –

+0

Danke! Sie haben mir sehr geholfen. –

+0

Sie sind herzlich willkommen :) @objektiv C –