Pregunta

Buenos dias a todos,

Tengo una asociación en la que estoy trabajando, y por alguna razón, no puedo conseguir que guarde cambios en el objeto en cuestión cuando lo depugio en IRB. Me preguntaba si alguien podría señalar mi problema.

Aquí está la asociación:

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

Cuando enciendo el IRB, puedo tomar un usuario. Puedo configurar el usuario Managed_affiliate bien. Sin embargo, cuando guardo, eso no se refleja en absoluto en el afiliado, no tiene gerente. Del mismo modo, puedo configurar bien el administrador del afiliado (afiliado.first.manager = user.first). Devuelve como si todo esté bien, pero cuando voy a guardarlo, simplemente devuelve "falso". Si activo la función de registro de IRB, esta es la salida:

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

¿Hay alguna razón obvia por la cual esta asociación no se ahorrará correctamente?

Además, aquí está el esquema de la tabla de afiliados:

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

Gracias por cualquier ayuda.

¿Fue útil?

Solución

ActiveRecord::Base#save devolverá falso si una validación falla o si alguna before_* Las devoluciones de llamada en el modelo devuelven falso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top