Hi guys,
I have these models:
class Compra < ActiveRecord::Base
belongs_to :proveedor
has_many :detalle_de_compras
has_many :lotes, :through => :detalle_de_compras
accepts_nested_attributes_for :detalle_de_compras, :allow_destroy =>
true
def nombre_proveedor
self.proveedor.try(:nombre)
end
end
class DetalleDeCompra < ActiveRecord::Base
belongs_to :compra, :counter_cache => true
belongs_to :lote
accepts_nested_attributes_for :lote
end
The problem is that when I delete a "DetalleDeCompra" through an
update to "Compra" using nested attributes (with the _delete param set
to something that evaluates to true) the counter cache is decreased
twice.
I don't know if it's worth mentioning that I'm sending data for a 2
level deep nested structure. This is the deepest model I'm using:
class Lote < ActiveRecord::Base
belongs_to :estado_del_lote
belongs_to :producto
has_one :detalle_de_compra
has_one :compra, :through => :detalle_de_compra
def nombre_producto
self.producto.try(:nombre)
end
def nombre_estado_del_lote
self.estado_del_lote.try(:nombre)
end
def fecha_compra
self.compra.try(:fecha)
end
end
Any ideas on what's wrong here?
P.S. Here is the migration to the model holding the counter cache:
class CreateCompras < ActiveRecord::Migration
def self.up
create_table :compras do |t|
t.integer :proveedor_id
t.date :fecha
t.date :fecha_de_pago
t.string :condicion_de_pago
t.integer :detalle_de_compras_count, :default => 0
t.timestamps
end
end
def self.down
drop_table :compras
end
end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---