2017-07-16 17 views
0

ich folgendes Schema habe:Rails 5 - kann nicht geladen werden Daten aus assoziierten Modell (belongs_to/has_one)

class Rental < ApplicationRecord 
    has_one :tenant 
end 
class Tenant < ApplicationRecord 
    belongs_to :rental 
end 

So in der rentals DB-Tabelle gibt es eine Spalte tenant_id genannt wird.

Ich möchte Daten über den Mieter durch das rental Modell angezeigt werden, so dass ich versucht, dies:

@rental = Rental.find(params[:id]) 
puts @rental.tenant.inspect 

aber bekam die folgende Fehlermeldung:

PG::UndefinedColumn: ERROR: column tenants.rental_id does not exist LINE 1: SELECT "tenants".* FROM "tenants" WHERE "tenants"."rental_i...^: SELECT "tenants".* FROM "tenants" WHERE "tenants"."rental_id" = $1 LIMIT $2 

Was hier noch fehlt mir? Habe ich vergessen, etwas zu dem einen oder anderen Modell hinzuzufügen?

Antwort

1

Die Rails-Konvention soll den Fremdschlüssel auf der belongs_to Seite haben.

In Ihrem Modell

  • rental hat ein tenant und
  • tenant zu rental

gehört ... so Ihre tenants Tabelle eine rental_id Spalte haben sollte, nicht umgekehrt.


Wenn Sie Ihr Datenbankschema nicht ändern möchten, können Sie auch die Modell Beziehungen ändern:

class Rental < ApplicationRecord 
    belongs_to :tenant 
end 

class Tenant < ApplicationRecord 
    has_one :rental 
end 
Verwandte Themen