2012-11-18 38 views
24

Xin chào, tôi là người mới sử dụng Ruby on Rails. Tôi đang cố gắng thu hút một trang blog nhỏ. Tôi có hai bảng Bài và Bình luận. Mỗi bài đăng sẽ có nhiều nhận xét. Tôi tạo ra các bảng bằng cách sử dụng các lệnh này.Tạo mối quan hệ khi giàn giáo

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

Bây giờ tôi muốn thêm mối quan hệ vào các lớp mô hình. Tôi thêm has_many :comments vào lớp Đăng và belongs_to :title vào lớp Nhận xét. Tuy nhiên, khi tôi cố gắng gọi số post.comments tôi nhận được lỗi thời gian chạy là SQLException: no such column: comments.post_id. Tôi có nên tạo di chuyển và thêm post_id trong Nhận xét hoặc có cách nào để đạt được điều này khi giàn giáo không?

+1

Xem https://coderwall.com/p/f5mdoq để được trợ giúp. –

+1

Bạn có thể thay đổi câu trả lời được chấp nhận cho câu hỏi này vì câu trả lời hiện được chấp nhận đã lỗi thời chưa? Thx – JamieD

Trả lời

9

Bạn chắc chắn đang đi đúng hướng. Nếu bạn thêm cột post_id khi tạo Comment giàn giáo mối quan hệ của bạn sau đó sẽ làm việc (mặc dù bạn vẫn cần phải thêm has_many :commentsbelongs_to :post)

Vì vậy, các cuộc gọi điện được cập nhật sẽ trông như thế này:

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

** Xem câu trả lời tốt hơn dưới đây! ** – mb21

118

Scaffold thực sự cung cấp một cách để tạo ra các mối quan hệ, bạn nên sử dụng các loại :references dữ liệu

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

này sẽ tạo ra một sự chuyển đổi cho bảng bình luận với trường post_id và chỉ mục cho nó. Trình tạo cũng sẽ thêm belongs_to :post vào mô hình Nhận xét.

Nó sẽ không tuy nhiên tạo mặt sau của mối quan hệ, do đó bạn sẽ cần phải thêm

has_many :comments 

với mô hình bài mình. Bạn cũng sẽ cần thêm định tuyến tài nguyên lồng nhau nếu đây là thứ bạn cần vì trình tạo không thể xử lý điều này.

+16

này phải là câu trả lời được chấp nhận –

+1

nó đã được trả lời 2 năm sau))) – user2950593

+1

Khi bạn thêm trường has_many theo cách thủ công cách bạn tạo quá trình di chuyển? – lapinkoira

Các vấn đề liên quan