2012-06-19 18 views
5

tengo el siguiente código en el modelo rieles empresa: Modelocómo hacer que la relación funcione has_and_belongs_to_many en MongoId

class Company 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :name,  type: String 
    ... 
    has_and_belongs_to_many :users 
end 

usuario:

class User 
    include Mongoid::Document 
    include Mongoid::Timestamps 
    include ActiveModel::SecurePassword 

    field :email,   type: String 
    ... 
    has_and_belongs_to_many :companies 
end 

hay un registro de la empresa en la base de datos, y una registro de usuario y están asociados. Por alguna razón, el código siguiente no funciona:

c = Company.first 
c.users # returns empty array 

Del mismo modo, el código followign no funciona:

u = User.first 
u.companies 

Pero el siguiente código hace el trabajo:

c = Company.first 
user = User.find c.user_ids.first 

y la El siguiente código también funciona:

u = User.first 
company = Company.find u.company_ids.first 

así que si intento acceder a los usuarios de los usuarios de la compañía, no funciona, pero la matriz user_ids tiene una lista de identificadores de usuario, y cuando intento acceder a los usuarios de esta lista, funciona. ¿Cómo puedo solucionar este problema?

estoy usando los carriles 3.2.5 y MongoId 3.0.0.rc

+0

Me di cuenta de que cuando creaba la asociación por 'user.companies << company', obtenía' user.companies' como se esperaba, pero 'company.users' funcionaba de manera diferente, devolviendo una consulta. Pude ver esa matriz llamando a 'company.users.all.to_a'. Después de que llamé a 'company.users << user2' esto realmente parecía interferir con las asociaciones. – Baruch

+0

Muy tarde para el espectáculo. Esta solución lo hizo por mí: http://stackoverflow.com/questions/7308539/mongoid-has-and-belongs-to-many-associations/36282420#36282420 –

Respuesta

2

que tenía exactamente el mismo problema;) asegurarse de que está utilizando la versión mongodb> 2.0.0, para más detalles ver: http://mongoid.org/en/mongoid/docs/installation.html#installation

+0

Sí, simplemente hice un sudo apt-get install mongodb- 10gen para reinstalar mongodb, (creo que anteriormente lo había sacado de la fuente hace aproximadamente 6 meses) y comenzó a funcionar después de eso. – umar

+0

esto no funciona para mí –

Cuestiones relacionadas