Je migre mon projet de mysql vers mongodb et j'ai quelques problèmes. Comment mettre à jour les attributs dans un document incorporé de manière ActiveRecord?Meilleure façon de mettre à jour un document incorporé dans mongoid
C'est possible en mongoïde?
class Template
include Mongoid::Document
include Mongoid::Versioning
embedded_in :site, :inverse_of => :templates
end
class Site
embeds_many :templates
end
Par exemple:
site = Site.find(params[:current_site_id])
template = site.templates.find(params[:id])
template.update_attributes(params[:template])
J'obtenu:
Access to the collection for Template is not allowed since it is an embedded document, please access a collection from the root document.
Ok, mais comment le faire à partir du document racine?
Modifier:
Il ressemble MongoId :: Versioning que je l'utilise dans le modèle faire quelques ennuis. Je retire le module inclus et tout fonctionne bien.
Quelle version de mongoid utilisez-vous? –
gem 'mongoid', '2.0.0' –
Étant donné que les modèles sont un document incorporé, si vous ajoutez 'Mongoid :: Versioning' au modèle' Site' - il mettra à jour toutes les modifications apportées aux documents incorporés. Puisque les documents incorporés font en réalité partie du document parent - et non des relations. – theTRON