2017-06-24 6 views
1

Ich versuche, eine Zuordnung für eine Klasseninstanz zu überschreiben. Normalerweise möchte ich die Verknüpfung in ActiveRecord zurückgeben, wenn bestimmte Logik erfüllt ist. Siehe unten:Ordnungsgemäße Methode zum Überschreiben einer Zuordnung in einer Klasse

class Design < ActiveRecord::Base 

belongs_to font 

def font 
    if override 
    return another_font 
    else 
    # This results in a recursive call, stack level too deep. 
    return send(:font) 

    # This would work if font were an attribute, not an association 
    return read_attribute(:font) 
    end 
end 

Irgendwelche Vorschläge? Vielen Dank.

Antwort

2

Überschriebene Methoden können super rufen die ursprüngliche Methode aufzurufen:

def font 
    if override 
    another_font 
    else 
    super 
    end 
end 

Oder kürzer:

def font 
    override ? another_font : super 
end 
Verwandte Themen