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.

È stato utile?

Soluzione

ActiveRecord::Base#save restituirà falso se una convalida fallisce o se presente before_* I callback sul modello restituiscono false.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top