L'oggetto rifiuta di salvare i cambiamenti nelle rotaie IRB
-
27-09-2019 - |
Domanda
Buongiorno a tutti,
Ho un'associazione su cui sto lavorando e, per qualche motivo, non riesco a farla salvare le modifiche all'oggetto in questione quando lo sto debug in IRB. Mi chiedevo se qualcuno potesse sottolineare il mio problema.
Ecco l'associazione:
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
Quando accendere l'IRB, posso prendere un utente.First e Affiliate.First. Posso impostare bene l'utente managed_ffiliate. Tuttavia, quando salvo, ciò non si riflette affatto nell'affiliata - non ha alcun manager. Allo stesso modo, posso impostare bene il manager dell'affiliato (affiliale.first.Manager = user.First). Ritorna come se tutto andasse bene, ma quando vado a salvarlo restituisce semplicemente "falso". Se attivo la funzione di registrazione IRB, questa è l'output:
SQL (0.1ms) BEGIN
SQL (0.2ms) ROLLBACK
C'è qualche motivo ovvio per cui questa associazione non salverà correttamente?
Inoltre, ecco lo schema per la tabella degli affiliati:
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
Grazie per tutto l'aiuto.
Soluzione
ActiveRecord::Base#save
restituirà falso se una convalida fallisce o se presente before_*
I callback sul modello restituiscono false.