对于单表继承,如何在嵌套参数中指定子类类型

时间:2019-05-21 07:24:19

标签: ruby ruby-on-rails-4 activerecord single-table-inheritance

比方说,我有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对象

0 个答案:

没有答案