2011-10-02 4 views
3

J'ai du mal à conserver mes documents en mongoïde. Je le fragment de code suivant dans mon contrôleur:Persistance du document Mongoid après la recherche

params[:user][:residence_attributes][:locations_attributes].each do |num,location_attributes| 
    zipcode = Location.find(location_attributes[:id]) 

    if !zipcode.update_attributes(location_attributes) 
    puts "fail" 
    fail = true 
    end 

    puts "zipcode again #{zipcode}" 
    puts "zipcode number #{zipcode.number}" 
    puts "zipcodes = #{Zipcode.count}" 
    zipcode = Zipcode.find(@user.residence.locations[0].id) 
    puts "zipcode again #{zipcode}" 
    puts "zipcode number #{zipcode.number}" 
    puts "zipcodes = #{Zipcode.count}" 
    zipcode = Zipcode.find(@user.residence.locations[0].id) 
    puts "zipcode again #{zipcode}" 
    puts "zipcode number #{zipcode.number}" 
    puts "zipcodes = #{Zipcode.count}" 
end 

Et il donne le résultat suivant:

zipcode again #<Zipcode:0x000000063826a0> 
zipcode number 11210 
zipcodes = 1 
zipcode again #<Zipcode:0x00000006348860> 
zipcode number 
zipcodes = 1 
zipcode again #<Zipcode:0x00000006340ef8> 
zipcode number 
zipcodes = 1 

La question est pourquoi le code postal id change quand je trouve le document les deuxième et troisième temps?

Ceci est un problème car le document ne persiste pas.

J'ai les modèles suivants:

class Zipcode < Location 
    include Mongoid::Document 
    attr_accessible :number 
    attr_accessor :number 

    validates_presence_of :number 
    validate :check_zipcode 
end 

class Location 
    include Mongoid::Document 

    attr_accessible :latitude, :longitude 
    belongs_to :locatable, polymorphic: true 
end 

class UserResidence 
    include Mongoid::Document 

    has_many :locations, as: :locatable 

    embedded_in :user, :inverse_of => :residence 

    attr_accessible :locations_attributes 
    accepts_nested_attributes_for :locations, autosave: true 

    #validates_presence_of :locations 
    #validates :locations, :length => {:minimum => 1} 
end 

Merci

Répondre

1

êtes-vous enregistrez le document?

essayez de définir AutoSave true

voir: http://mongoid.org/docs/upgrading.html (recherche sur la page pour AutoSave)

+0

Autosave est vrai, je mettrai à jour le poste avec le modèle user_residence. De toute façon, je suis en train de mettre à jour le code postal directement, donc aurais-je encore besoin d'autosave? – GTDev

+0

Il y a aussi un Bug connexe dans Mongoid: https://github.com/mongoid/mongoid/issues/1198 – Tilo

+0

Le bug est-il toujours dans mongoid 2.2.1? parce que c'est la version que j'utilise – GTDev

Questions connexes