6 Stimmen

Mongoid-Beziehung wird nicht gespeichert

klasse Konto
  include Mongoid::Dokument
  include Geocoder::Model::Mongoid
  geocoded_by :zip
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

  before_validation :pass_confirm
  after_validation :geocode_check
  before_create :assign_subs

  field :email, type: String
  field :typ, type: String
  field :zip, type: String
  field :oldzip, type: String
  field :koordinaten, type: Array
  field :breitengrad, type: Float
  field :längengrad, type: Float
  auto_increment :num, sammlung: :kontonummern

  index :num, einzigartig: true

  hat_viele :einreichungen

  mount_uploader :foto, PhotoUploader

  def self.find_by_num(num)
    Konto.where(num: num).erstes
  end

  beschützt

  def pass_confirm
    self.password_confirmation ||= self.password
  end

  def geocode_check
    if self.oldzip != self.zip
      self.oldzip = self.zip
      self.geocode
    end
  end

  def assign_subs
    binding.pry
    Einreichung.where(email: self.email).each do |sub|
      sub.zip = self.zip
      self.einreichungen << sub
    end
  end

end

--

klasse Einreichung
  include Mongoid::Dokument
  include Mongoid::Suche
  include Mongoid::Zeitstempel::Erstellt
  include Geocoder::Model::Mongoid
  geocoded_by :zip

  before_validation :fix_rate
  after_validation :geocode

  suche_in :nachricht, tags: :name

  field :email, type: String
  field :rate, type: String
  field :nachricht, type: String
  field :typ, type: String
  field :zip, type: String
  field :koordinaten, type: Array
  field :breitengrad, type: Float
  field :längengrad, type: Float
  auto_increment :num, sammlung: :einreichungsnr

  index :num, einzigartig: true

  hat_und_gehört_zu_viele :tags
  gehört_zu :konto

  mount_uploader :foto, PhotoUploader

  beschützt

  def fix_rate
    self.rate = self.rate.sub(/[^\d]*/, '').sub(/(\d*).*/, '\1')
  end

end

--

pry(#)> self.einreichungen << Einreichung.erstes
=> [#]
pry(#)> self.einreichungen
=> []

wie oben zu sehen ist, wird beim Versuch, ein Unterdokument hinzuzufügen, dieses nicht gespeichert. Irgendwelche Ideen, was hier los sein könnte?

Außerdem- dies ist eine hat_viele / gehört_zu Beziehung und wenn ich sie auf hat_und_gehört_zu_viele ändere, scheint es einwandfrei zu funktionieren.

9voto

nickh Punkte 4681

Meine Vermutung ist, dass du Mongoid aktualisiert hast, aber die Upgrade-Dokumentation nicht gelesen hast.

Füge , :autosave => true zur Beziehung von Account mit Submission hinzu.

class Account
  include Mongoid::Document
  has_many :submissions, :autosave => true
end

class Submission
  include Mongoid::Document
  belongs_to :account
end

Account.delete_all
Submission.delete_all

Submission.create
account = Account.new
account.submissions << Submission.first
account.save
Submission.first.account == account

Dies wurde auch als GitHub-Problemeintrag gemeldet. Tsk tsk.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X