Pergunta

Bom Dia a todos,

Eu tenho uma associação em que estou trabalhando e, por algum motivo, não consigo economizar alterações no objeto em questão quando estou depurando -o no IRB. Eu queria saber se alguém poderia apontar meu problema.

Aqui está a associação:

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 eu aceito o IRB, posso pegar um usuário. Primeiro e afiliado. Eu posso definir bem o gerenciado do usuário. No entanto, quando salvo, isso não é refletido na afiliada - ele não tem gerente. Da mesma forma, posso definir o gerente da afiliado (afiliate.first.manager = user.first). Ele retorna como se tudo estivesse bem, mas quando eu vou salvá -lo, simplesmente retorna "false". Se eu ativar a função de registro do IRB, esta é a saída:

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

Existe alguma razão óbvia para que essa associação não economize corretamente?

Além disso, aqui está o esquema para a tabela 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

Obrigado por qualquer ajuda.

Foi útil?

Solução

ActiveRecord::Base#save retornará falso se uma validação falhar ou se houver before_* Os retornos de chamada no modelo retornam falsos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top