2011-01-19 33 views

Trả lời

8

Kết quả giống nhau đối với trường hợp cụ thể của bạn; bạn nói đúng. Nhưng references cho phép tùy chọn :polymorphic => true sẽ tự động tạo cột foo_type dưới dạng chuỗi trong bảng.

Ngữ nghĩa, references là tốt hơn nếu bạn đang cố gắng làm cho di chuyển của bạn phản ánh tốt hơn mối quan hệ giữa các bảng trong cơ sở dữ liệu.

2

@ Câu trả lời của Mike độc ​​đáo giải thích ý nghĩa của references. Tuy nhiên, tốt hơn là không nên di chuyển quá gần với các liên kết AR của bạn. Đặc biệt, bạn có thể nhận được tất cả các loại dưa chua khi nói đến việc triển khai ứng dụng của bạn nếu bạn chạy di chuyển trước khi cập nhật ứng dụng từ kiểm soát phiên bản, chẳng hạn. Nó không phải là một vấn đề lớn cho đến khi nó cắn bạn :-)

+0

vì vậy bạn có cho rằng tài liệu tham khảo có thể nguy hiểm không? Bạn có thể đưa ra một ví dụ về loại dưa chua mà nó có thể đưa tôi vào? – kdt

+1

Thông thường, điều này có thể dẫn đến các vấn đề nếu việc cập nhật mô hình và mã của bạn không nằm trong cùng một cam kết kiểm soát phiên bản hoặc ví dụ: nếu bạn thay đổi ý định về liên kết sau và cần cập nhật máy quá xa đường cong sự phát triển của bạn. Vì vậy, bạn sẽ có migration1 sử dụng 'references' và do đó xác định tên khóa ngoài từ các liên kết mô hình AR. Sau đó, bạn quyết định hoàn tác việc di chuyển đó bằng một tài khoản mới và cũng xóa liên kết khỏi mã của bạn. Bây giờ, bất kỳ máy nào có lược đồ là 2 thế hệ cũ không thể chạy di chuyển vì liên kết đã biến mất. – noodl

+0

Tôi biết đó là loại phức tạp. Tôi không nên lo lắng về nó cho đến khi nó thực sự làm tổn thương bạn :-) – noodl

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