Here is my issue
class TransactionProduct < ActiveRecord::Base
has_one :product, :class_name => ‘Product’
end
class Product < ActiveRecord::Base
set_inheritance_column :class_name
end
class ProductVT < Product
def self.base_class
ProductVt
end
end
So when I do
Product.find(:first) I got an instance of ProductVT with only the
columns of Product, which is ok. Then when I do reload like this :
Product.find(:first).reload
I do have a complete instance of ProductVT.
But
When I do nagivate on Product from TransactionProduct and I do reload on
the instance of ProductVT it does not reload the ProductVT, it does it
on Product
TransactionProduct.find(:first).product.relaod (reload the product
instance instead of ProductVT)
Even if I see in the console that is a ProductVT it reloads Product. I
checked in development.log and in performs the query on Product.
Any idea.
Note : A temp fix is the to do a
Product.find(TransactionProduct.find(:first).product).reload, which is
ugly
Hi,
On Jan 27, 7:46 pm, Rémi Gagnon [email protected]
wrote:
TransactionProduct.find(:first).product.relaod (reload the product
instance instead of ProductVT)
Even if I see in the console that is a ProductVT it reloads Product. I
checked in development.log and in performs the query on Product.
Any idea.
I fear I got lost somewhere but did you know ‘becomes’ ?
TransactionProduct.find(:first).product(true).becomes(ProductVT)
BTW, the product(true) that I used is is quite(?) the same like
product.reload
ciao, tom
Thanks Tom for the suggestion. I did not know this. But the bads new
is that does the same issue.
It looks like the superclass name is cached in the association then even
if I do a reload or (true) and becomes, it fetch the data from Product
instead of ProductVT
Rémi
Thomas r. Koll wrote:
Hi,
On Jan 27, 7:46�pm, R�mi Gagnon [email protected]
wrote:
TransactionProduct.find(:first).product.relaod �(reload the product
instance instead of ProductVT)
Even if I see in the console that is a ProductVT it reloads Product. �I
checked in development.log and in performs the query on Product.
Any idea.
I fear I got lost somewhere but did you know ‘becomes’ ?
TransactionProduct.find(:first).product(true).becomes(ProductVT)
BTW, the product(true) that I used is is quite(?) the same like
product.reload
ciao, tom