I have
class Car < ActiveRecord::Base; end
class Porsche < Car
has_many :page_items, :as=>:itemable, :dependent=>:destroy
end
I have to mention that I’m using a single table called cars which has a field type.
class PageItem<ActiveRecord::Base
belongs_to :itemable, :polymorphic=>true
end
When I do
a = PageItem.new
a.itemable = Porsche.new
a.itemable
#<Porsche id: nil, type: "Porsche", name: nil, ..etc>
a.itemable_type
=> "Car"
And it should be
a.itemable_type
=> "Porsche"
Do anybody have an idea about this?
Update
According to bor1s‘s answer probably this is the right behaviour. So if is it, then my question is how can I set it to Porsche implicitly?
This is because Porshe is virtual model, it is not really exist in in database, it just has
typefield to know that it is Porshe. Maybe you should get rid of STI and use saytypecolumn to save Car model with type of Porshe and usescopeto find porshes. I hope I helped you alittle.