Ho il seguente codice nel modello di società rotaie: modellocome far funzionare la relazione has_and_belongs_to_many in mongoid
class Company
include Mongoid::Document
include Mongoid::Timestamps
field :name, type: String
...
has_and_belongs_to_many :users
end
utente:
class User
include Mongoid::Document
include Mongoid::Timestamps
include ActiveModel::SecurePassword
field :email, type: String
...
has_and_belongs_to_many :companies
end
C'è una casa discografica nel database, ed un record utente e sono associati. Per qualche ragione, il seguente codice non funziona:
c = Company.first
c.users # returns empty array
Allo stesso modo, il codice followign non funziona:
u = User.first
u.companies
Ma il seguente codice funziona:
c = Company.first
user = User.find c.user_ids.first
e la funziona anche il seguente codice:
u = User.first
company = Company.find u.company_ids.first
quindi se provo ad accedere agli utenti da company.users, non funziona, ma l'array user_ids ha un elenco di ID utente, e quando provo ad accedere agli utenti da questo elenco, funziona. Come posso risolvere questo problema?
sto usando rotaie 3.2.5 e mongoid 3.0.0.rc
Ho notato che durante la creazione dell'associazione da 'user.companies << company', ho ottenuto' user.companies' come previsto ma 'company.users' ha funzionato in modo diverso, restituendo una query. Potevo vedere quell'array chiamando 'company.users.all.to_a'. A seguito di ciò ho chiamato "company.users << user2' questo sembrava davvero fare casino con le associazioni. – Baruch
Molto tardi allo spettacolo. Questa soluzione alternativa lo ha fatto per me: http://stackoverflow.com/questions/7308539/mongoid-has-and-belongs-to-many-associations/36282420#36282420 –