Bị mắc kẹt trong một vấn đề - ngay từ cái nhìn đầu tiên - đơn giản trong RoR. Tôi chắc chắn rằng điều đó là dễ dàng, nhưng không có câu trả lời nào ở đây trong SO giúp tôi quá nhiều.
Tôi có hai mô hình ActiveRecord: Foo
có nhiều Bars
:
class Foo < ApplicationRecord
has_many :bars
end
class Bar < ApplicationRecord
belongs_to :foo
end
Điều đó hoạt động như một sự quyến rũ. Nhưng tôi muốn sử dụng một trường khác Foo
là Foreign_key. Mặc định là foo_id
tôi muốn sử dụng custom_id
làm khóa ngoại của mình. Vì vậy, tôi đã thử điều này (như nhiều giải pháp trên web đã đề xuất):
class Foo < ApplicationRecord
has_many :bars, :foreign_key => 'custom_id', :class_name => 'Bars'
end
class Bars < ApplicationRecord
belongs_to :foo, :class_name => 'Foo'
end
Nhưng điều đó không hiệu quả. tức là ActiveRecord tiếp tục ràng buộc Foo
để Bars
sử dụng foo_id
.
Lưu ý: Bao gồm self.primary_key = 'custom_id' trong Foo sẽ có tác dụng một phần. nhưng tôi không nghĩ đó là một ý kiến hay. Tôi muốn giữ foo_id làm khóa chính
CẬP NHẬT:
Đưa ra phản hồi - Cảm ơn các bạn-, tôi đã tải lên ví dụ đó tại đây https://github.com/montenegrodr/tempional_repository_ror :
CẬP NHẬT # 2:
Các câu trả lời không thỏa mãn câu hỏi trên. Tại sao bài kiểm tra không thành công, giả định của tôi là nó không nên thất bại.
CẬP NHẬT # 3:
Có một số câu trả lời mới mà tôi vẫn cần đánh giá. Sẽ làm điều đó trong vòng 24 giờ. Cảm ơn.
CẬP NHẬT # 4:
Cảm ơn các bạn cho tất cả các câu trả lời. Nhưng không ai trong số họ thỏa mãn các tiêu chí. Tôi cần phải vượt qua bài kiểm tra đó. Nếu không được, ai đó có thể giải thích tại sao không? Nó có phải là một hạn chế đường ray?