比方说,我有2个模型Owner和Pet,一个所有者可以拥有很多宠物。 Pet是一个超类,通过“单表继承”它有2个子类CatPet和DogPet。
当我尝试通过嵌套参数创建所有者和宠物时,如何指定要创建DogPet的实例?不知何故,默认情况下,我正在实例化CatPet。
class Owner < ActiveRecord::Base
has_many :pets
end
class Pet < ActiveRecord::Base
belongs_to :owner
end
class DogPet < Pet
end
class CatPet < Pet
end
然后,当我尝试在“所有者”控制器中用宠物狗创建所有者时:
params = {
"name": "Tim",
"gender": "male",
"pets": [{
"name": "Snowy",
"type": "DogPet"}]
}
@owner = Owner.from_hash params.to_hash, :create
它不会创建DogPet对象,而是会创建CatPet对象