Frage

Guten Morgen alle,

Ich habe einen Verband, an dem ich arbeite, und aus irgendeinem Grund kann ich es nicht bekommen, um Änderungen am fraglichen Objekt zu speichern, wenn ich es in IRB debugge. Ich fragte mich, ob jemand auf mein Problem hinweisen könnte.

Hier ist der Verein:

class User < ActiveRecord::Base
  has_and_belongs_to_many :affiliates
  has_one :managed_affiliate, :class_name => "Affiliate", :foreign_key => "manager_id"
end

class Affiliate < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :manager, :class_name => "User"
  #The affiliates table has a foreign key field of manager_id
end

Wenn ich das IRB abfeuere, kann ich einen Benutzer erfassen. Erst und affiliate.First. Ich kann das Managed_Affiliate des Benutzers gut festlegen. Wenn ich jedoch speichere, spiegelt sich das im Partner überhaupt nicht wider - es hat keinen Manager. Ebenso kann ich den Manager des Affiliate -Managers gut festlegen (affiliate.first.manager = user.first). Es kehrt zurück, als ob alles in Ordnung ist, aber wenn ich es speichere, kehrt einfach "falsch" zurück. Wenn ich die IRB -Protokollierungsfunktion aktiviere, ist dies die Ausgabe:

SQL (0.1ms)   BEGIN
SQL (0.2ms)   ROLLBACK

Gibt es einen offensichtlichen Grund, warum dieser Verein nicht richtig retten wird?

Auch hier ist das Schema für die Affiliates -Tabelle:

create_table "affiliates", :force => true do |t|
    t.string   "name"
    t.string   "website"
    t.integer  "market_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "logo_file_name"
    t.string   "logo_content_type"
    t.integer  "logo_file_size"
    t.boolean  "track_subs"
    t.integer  "manager_id"
  end

Vielen Dank für jede Hilfe.

War es hilfreich?

Lösung

ActiveRecord::Base#save wird falsch zurückgegeben, wenn eine Validierung fehlschlägt oder falls vorhanden before_* Rückrufe auf dem Modell geben falsch zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top