tôi có đoạn mã sau trong mô hình đường ray công ty: Mô hìnhlàm thế nào để làm cho công việc mối quan hệ has_and_belongs_to_many trong mongoid
class Company
include Mongoid::Document
include Mongoid::Timestamps
field :name, type: String
...
has_and_belongs_to_many :users
end
User:
class User
include Mongoid::Document
include Mongoid::Timestamps
include ActiveModel::SecurePassword
field :email, type: String
...
has_and_belongs_to_many :companies
end
Có một công ty thu âm trong cơ sở dữ liệu, và một hồ sơ người dùng và chúng được liên kết. Đối với một số lý do, đoạn code sau không làm việc:
c = Company.first
c.users # returns empty array
tương tự, mã followign không hoạt động:
u = User.first
u.companies
Nhưng đoạn mã sau CO làm việc:
c = Company.first
user = User.find c.user_ids.first
và mã sau cũng hoạt động:
u = User.first
company = Company.find u.company_ids.first
vì vậy nếu tôi cố gắng truy cập người dùng từ company.users, nó không hoạt động, nhưng mảng user_ids không có danh sách id người dùng và khi tôi cố gắng truy cập vào người dùng từ danh sách này, nó hoạt động. Làm thế nào tôi có thể khắc phục vấn đề này?
tôi đang sử dụng đường ray 3.2.5 và mongoid 3.0.0.rc
Tôi nhận thấy rằng khi tạo liên kết bằng 'user.companies << company', tôi nhận' user.companies' như mong đợi nhưng 'company.users' hoạt động khác, trả về truy vấn. Tôi có thể thấy mảng đó bằng cách gọi 'company.users.all.to_a'. Sau đó tôi gọi là 'company.users << user2' điều này thực sự có vẻ lộn xộn với các hiệp hội. – Baruch
Rất muộn cho chương trình. Cách giải quyết này đã làm điều đó cho tôi: http://stackoverflow.com/questions/7308539/mongoid-has-and-belongs-to-many-associations/36282420#36282420 –