2012-11-18 10 views
24

Witam Jestem nowy w Ruby on Rails. Próbuję utworzyć małą witrynę na blogu. Mam dwie tablice Posty i komentarze. Każdy post będzie miał wiele komentarzy. Generuję tabele za pomocą tych poleceń.Tworzenie relacji podczas rusztowania

rails g scaffold Post title:string body:text author:string 
rails g scaffold Comment body:string author:string 

Teraz chcę dodać relację do klas modelu. Dodaję has_many :comments do klasy Post i belongs_to :title do klasy Comment. Jednak gdy próbuję wywołać post.comments pojawia się błąd środowiska wykonawczego, mówiąc: SQLException: no such column: comments.post_id. Czy powinienem utworzyć migrację i dodać post_id w komentarzu, czy jest jakiś sposób, aby to osiągnąć podczas rusztowania?

+1

Zobacz stronę https://coderwall.com/p/f5mdoq, aby uzyskać pomoc. –

+1

Czy możesz zmienić zaakceptowaną odpowiedź na to pytanie, ponieważ aktualnie zaakceptowana odpowiedź jest nieaktualna? Thx – JamieD

Odpowiedz

9

Jesteś zdecydowanie na dobrej drodze. Jeśli dodać kolumnę post_id podczas generowania Comment rusztowanie twój związek będzie wtedy działać (choć trzeba jeszcze dodać has_many :comments i belongs_to :post)

Więc zaktualizowane wezwanie generator będzie wyglądać następująco:

rails g scaffold Comment body:string author:string post_id:integer 
+13

** Zobacz lepszą odpowiedź poniżej! ** – mb21

118

rusztowań faktycznie dostarcza sposób wytwarzania związków, należy użyć typu :references danych

rails g scaffold Comment body:string author:string post:references 

To wygeneruje migrację dla tabeli komentarzy z polem post_id i indeksem dla niego. Generator doda także model komentarzy do modelu belongs_to :post.

To nie będzie jednak wygenerować odwrocie relacji więc trzeba dodać

has_many :comments 

do modelu samemu post. Konieczne będzie również dodanie routingu zasobów zagnieżdżonych, jeśli jest to coś, czego potrzebujesz, ponieważ generator nie może tego obsłużyć.

+16

to powinna być zaakceptowana odpowiedź –

+1

odpowiedź została udzielona 2 lata później))) – user2950593

+1

Kiedy ręcznie dodajesz pole has_many, w jaki sposób generujesz migrację? – lapinkoira

Powiązane problemy