2012-01-05 55 views
20

tôi có 2 mô hìnhRails mô hình has_many, belongs_to quan hệ

class User < ActiveRecord::Base 
    has_many :products 
end 

class Product < ActiveRecord::Base 
    belongs_to :user 
end 

Tôi có cần phải thêm một cột user_id vào bảng Sản phẩm hoặc không đường ray thêm nó theo mặc định?

Trả lời

47

Bạn cần phải thêm cột user_id theo cách thủ công vào mô hình Product. Nếu bạn chưa tạo mô hình của mình, hãy thêm tham chiếu trong danh sách cột vào trình tạo mô hình. Ví dụ:

rails generate model Product name:string price:decimal user:references

Hoặc, nếu mô hình Product của bạn đã tồn tại những gì bạn phải làm là:

rails g migration addUserIdToProducts user_id:integer

Điều đó sẽ tạo ra một sự chuyển đổi đúng cách thêm cột user_id đến products bàn. Với cột được đặt tên đúng (user_id), Rails sẽ biết đó là khóa ngoại của bạn.

+0

này, tôi đang sử dụng 'postgresql' và tôi đã tạo mô hình bằng phương pháp đầu tiên bạn đã đề cập. sử dụng 'user: references'. bây giờ khi tôi cố gắng xóa đối tượng mô hình 'user' nó cho tôi lỗi' PG :: ForeignKeyViolation: '. Mong đợi của tôi là, tất cả 'sản phẩm' trong' người dùng' sẽ bị xóa khi tôi xóa người dùng. PS: Tôi có 'thuộc_to: người dùng, phụ thuộc:: destroy' trong mô hình' Product' của tôi. Tôi là người mới bắt đầu trong đường ray :) –

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