2012-06-19 9 views
5

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

+0

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

+0

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 –

Antwort

2

ich das gleiche Problem genau hatte;) Stellen Sie sicher, mongodb Version> 2.0.0, um weitere Informationen zu verwenden sehen: http://mongoid.org/en/mongoid/docs/installation.html#installation

+0

Ja, ich habe einfach ein Sudo apt-get install mongodb- 10gen neu zu installieren mongodb, (ich glaube, ich hatte früher es ist von der Quelle vor etwa 6 Monaten) und es begann danach zu arbeiten. – umar

+0

das funktioniert nicht für mich –

Verwandte Themen