Tôi có hai bảng với mối quan hệ nhiều đến nhiều mà tôi đang sử dụng has_and_belongs_to_many để xác định liên kết.Tạo bảng nối không có khóa chính
class Foo < ActiveRecord::Base
...
has_and_belongs_to_many :bar
...
end
class Bar < ActiveRecord::Base
...
has_and_belongs_to_many :foo
...
end
Tôi cũng đã lớp được xác định để đại diện cho tham gia bảng
class BarFoo < ActiveRecord::Base
...
belongs_to :foo
belongs_to :bar
...
end
Khi tôi chạy rake db: hạt giống tôi nhận được lỗi sau:
Primary key is not allowed in a has_and_belongs_to_many join table (bar_foo)
Nếu tôi chỉnh sửa cơ sở dữ liệu và loại bỏ trường khóa chính (ID) khỏi bảng bar_foo và sau đó chạy lại db rake: tất cả mọi thứ hạt giống hoạt động như mong muốn.
Được nêu ở trên, phương thức ưa thích của việc tạo bảng nối trong đường ray không có khóa chính là gì?
Tôi cũng đã thử sử dụng "has_many: bars,: through =>: foo" và vise versa nhưng có thông báo lỗi giống như "undefined method 'klass' cho nil: NilClass".
Matt, cảm ơn phản hồi. Tôi là tương đối mới để RoR vì vậy phương tiện ưa thích của việc tạo ra một bảng không có tập tin mô hình tương ứng là gì? Điều này chỉ được thực hiện bằng cách tạo tệp di chuyển và sử dụng create_table để xác định bảng có hai thuộc tính bar_id và foo_id? – Keith
Đây là câu trả lời hay về cách thực hiện: [Tôi có cần tạo thủ công việc di chuyển cho bảng tham gia HABTM không?] (Http://stackoverflow.com/questions/564306/do-i-need-to-manually-create -a-migration-cho-a-habtm-join-table) – Matt