Ich habe den folgenden Code in den Schienen Unternehmensmodell machen:, wie man has_and_belongs_to_many Beziehungsarbeit in mongoid
class Company
include Mongoid::Document
include Mongoid::Timestamps
field :name, type: String
...
has_and_belongs_to_many :users
end
User-Modell:
class User
include Mongoid::Document
include Mongoid::Timestamps
include ActiveModel::SecurePassword
field :email, type: String
...
has_and_belongs_to_many :companies
end
Es ist ein Unternehmen Datensatz in der Datenbank, und ein Benutzerdatensatz und sie sind verbunden. Aus irgendeinem Grund ist der folgende Code nicht:
c = Company.first
c.users # returns empty array
ähnlich, wird der followign Code nicht:
u = User.first
u.companies
Aber der folgende Code funktioniert:
c = Company.first
user = User.find c.user_ids.first
und die folgender Code funktioniert auch:
u = User.first
company = Company.find u.company_ids.first
Wenn ich also versuche, auf die Benutzer von company.users zuzugreifen, funktioniert es nicht, aber das Array user_ids hat eine Liste von Benutzer-IDs, und wenn ich versuche, auf die Benutzer aus dieser Liste zuzugreifen, funktioniert es. Wie kann ich dieses Problem beheben?
ich bin mit Schienen 3.2.5 und mongoid 3.0.0.rc
Ich bemerkte, dass beim Erstellen der Assoziation von 'user.companies << Firma, ich' user.companies' wie erwartet erhalten, aber 'company.users' arbeitete anders, eine Abfrage zurück. Ich konnte dieses Array durch Aufruf von 'company.users.all.to_a' sehen. Danach rief ich 'company.users << user2' an, das schien wirklich mit den Assoziationen zu tun zu haben. – Baruch
Sehr spät zur Show. Diese Umgehungslösung hat es für mich getan: http://StackOverflow.com/Questions/7308539/Mongoid-Has-and-Belongs-To-Many-Associations/36282420#36282420 –