2017-04-18 4 views
0

Ich habe irgendwie 2 Fragen. Ich habe folgendes Modell und Methode, um den neuesten Datensatz aus der Sicht zu bekommen. aber wenn ich versuche, in der Konsole zu testen, bekomme ich Fehler undefined method or variable vCustomerDetails, warum ich den Fehler bekomme?Wie bekomme ich den neuesten Datensatz aus einer Ansicht und teste es in der Konsole

Auch, wie wähle ich nur eine Spalte aus Sicht?

SELECT TOP 1 HasConditionFlag FROM vCustomerDetails 
WHERE vCustomerDetails.UserID = @user_id 
ORDER BY EntryDate DESC 

Modell

module Customer 
    class CustomerUsage < ActiveRecord::Base 

self.table_name = 'vCustomerDetails' 

def self.has_condition_flag(user_id) 
    vCustomerDetails 
    .where("vCustomerDetails.UserID = #{user_id}") 
    .order('vCustomerDetails.EntryDate DESC') 
    .last 
    end 
    end 
end 
+0

Vielleicht '@ table_name' innerhalb von' self.has_condition_flag' hilft Ihnen –

+0

versuchte es. selbe Fehler – User7354632781

+0

Siehe, 'vCustomerDetails' ist ein lokaler Wert für' has_condition_flag'. Sie können nicht darauf eingehen. Darum geht der Fehler –

Antwort

0

entfernen vCustomerDetails

module Customer 
    class CustomerUsage < ActiveRecord::Base 

self.table_name = 'vCustomerDetails' 

def self.has_condition_flag(user_id)  
    where("vCustomerDetails.UserID = #{user_id}") 
    .order('vCustomerDetails.EntryDate DESC') 
    .last 
    end 
    end 
end 

eine begrenzte Anzahl zur Auswahl von Spalten verwenden

.select('HasConditionFlag') 
0

dieses arbeitete

def self.has_condition_flag(user_id) 
     CustomerUsage 
     .select("vCustomerDetails.HasConditionFlag") 
     .where("vCustomerDetails.UserID = #{user_id}") 
     .order('vCustomerDetails.EntryDate DESC') 
     .first 
Verwandte Themen