2016-05-11 9 views
0

Ich habe Probleme beim Erstellen (oder sogar Update) eines Datenbankeintrags, weil sowohl der Name der übergeordneten Klasse als auch der Name einer Attribut sind gleich. Ich verwende eine konsolidierte Datenbank, daher kann ich die Tabellen nicht ändern.Rails - Kann keinen Datensatz mit einem Attribut mit dem gleichen Namen der Klasse erstellen

Ich habe eine Klasse Periode mit einem Attribut 'Zeitraum'. Eine Periode hat viele Steuermaßstäbe.

#period model 
has_many :tax_scales, 
    foreign_key: 'period', 
    primary_key: 'period' 

#tax_scale model 
belongs_to :period, 
    foreign_key: :period, 
    primary_key: :period 

Also, wenn ich diese Ansicht in meinem tax_scale verwenden:

#new.html.haml 
= f.label :period 
= f.number_field :period 

ich diesen Fehler:

Period(#97477176) expected, got String(#8598408)

Mein Controller params sind:

params.require(:tax_scale).permit(:minimum, :maximum, ..., :period) 

Wie kann ich einen tax_scale rec bearbeiten (oder erstellen) erfolgreich?

+1

Es gibt nur eine Möglichkeit, den Attributnamen zu ändern. – Pavan

+0

Auch wenn möglich, warum mache ich es unnötig verwirrend? –

+0

Die Datenbank wird von anderen Personen und Systemen verwendet. Ich kann das Schema nicht ändern – rogeryc

Antwort

0

finde ich die Lösung: Einsatz Methoden selbst mit [: Attribute], das Attribut sicher seine

#tax_scale model 
def current_period 
    self[:period] 
end 

def current_period=(p) 
    self[:period] = p 
end 

#new.html.haml 
= f.label :current_period 
= f.number_field :current_period 

Hinweis zugegriffen habe ich selbst verwenden, [: Zeit] und nicht self.period, weil die der zweite greift immer noch auf den übergeordneten Datensatz zu, nicht auf das Attribut.

Verwandte Themen