2017-07-25 1 views
0

Ich habe zwei Modelle Person und Car und ich kann nicht das DB-Schema, die eine Fremdschlüsselspalte hat ändern car nicht car_id in der Persons Tabelle genannt.Activeadmin Form mit einem benutzerdefinierten Fremdschlüsselspaltennamen

Bis jetzt ist es in Ordnung, weil ich die folgende Zeile in dem Person Modell:

belongs_to :car, class_name: 'Car', foreign_key: 'car' 

Und jetzt zum Beispiel, wenn ich Person.last.car versuchte es ein Car Objekt zurückgibt auf den Car ID in dieser Spalte basiert.

Aber das Problem ist mit Activeadmin denn wenn der Benutzer einen Person Datensatz zu bearbeiten versuchte er den aktuellen Car zu laden annehmen, und wählen Sie sie auf der Liste standardmäßig, aber es funktioniert nicht.

Mein Formular Code:

form do |f| 
    f.inputs 'Person Details' do 
     .... 
     .... 
     f.input :car 
     .... 
     .... 
    end 
end 

Und auch wenn ich jedes Auto ausgewählt und angeklickt einreichen, ich bin dieser Fehler auftritt Car(#97670400) expected, got String(#19439720)

Auch habe ich versucht, einen Alias ​​für die Spalte zu machen, aber ohne Glück

alias_attribute :ca_id, :car 

ich verwende Rails 5.0.2 und die neueste ActiveAdmin.

+1

Geradlinig und einfache Antwort würde den Namen 'car_id' sich ändern, aber wie Sie bestand darauf, try Ändern 'gehört_zu: Auto, Klassenname: 'Auto', Fremdschlüssel: 'Auto' zu' gehört_zu: Person_auto, Klassenname:' Auto ', Fremdschlüssel:' Auto' (nur Beispiel). Nicht sicher, obwohl. – Pavan

+0

@Pavan Ich will, dass es zu 'Car' gehört, was ein anderes Modell ist, was meinst du mit' person_car'. –

+1

Ich werde es später erklären. Hat es funktioniert? – Pavan

Antwort

1

Auto (# 97670400) erwartet, bekam String (# 19439720)

Wie gesagt, die gerade nach vorne und einfache Antwort würde den Spaltennamen zu car_id (sich ändern, die empfohlen ist) und es in der Form wie f.input :car_id verwenden, aber wie Sie darauf bestanden, einen anderen (aber aussagekräftigen) Namen für die Assoziation. So etwas wie unten

belongs_to :person_car, class_name: 'Car', foreign_key: 'car' 

Erläuterung:

  • Namenskonflikte

Sie sollten Namenskonflikte vermeiden. Die car (Spaltenname) in f.input :car Konflikte mit dem Assoziationsnamencar in belongs_to :car, class_name: 'Car', foreign_key: 'car' Das ist der Grund für den Fehler

Verwandte Themen