2017-12-31 4 views
-2

Ich bin mir nicht sicher, ob dies eine Best Practices in Bezug auf die Assoziation ist. Jeder kann mir helfen,versucht die Schienen Modell Association

//post,rb 
class Post < ApplicationRecord 
    belongs_to :user 
    has_one :location, through: :user 
    has_one :category, through: :user 
    has_one :type, through: :user 
end 

//user.rb 
class User < ApplicationRecord 
    has_many :posts 
end 

//category.rb 
class Category < ApplicationRecord 
    belongs_to :post 
end 

//location.rb 
class Location < ApplicationRecord 
    belongs_to :post 
end 

//type.rb 
class Typo < ApplicationRecord 
    belongs_to :post 
end 

So ist das eine der Hauptziel hierfür ist es wie User.posts.location, erstellen (Land: "Japan", Stadt: "Kyoto")

aber ich bekomme ein Fehler mit dem Standort NoMethodError: nicht definierte Methode `Standort‘ für #

sollte auch Referenzen in der Post ia wie location:references type:references category:references

+1

Sie 3 Klassen entfernen 'Category', sie verschiedene Namen lassen. – zishe

+0

Entschuldigung bearbeitet Ich habe gerade eine Kopie einfügen –

+0

Bitte fügen Sie auch Migrationsdatei hinzu. – zishe

Antwort

1

Sie müssen die Klassen wie

umbenennen
#location.rb 
class Location< ApplicationRecord 
    belongs_to :post 
end 

#type.rb 
class Type < ApplicationRecord 
    belongs_to :post 
end 

Nicht müssen

through: :user #=> this use for many to many relationship 

Sie dieses

+0

ich machte eine Bearbeitung für Tippfehler sorry –