Ruby on rails Rails Parent.find方法返回类型为Child的对象

Ruby on rails Rails Parent.find方法返回类型为Child的对象,ruby-on-rails,inheritance,model,find,Ruby On Rails,Inheritance,Model,Find,我看到一个有趣的行为,想了解一些情况 我有两个模型:Person和User。用户从Person继承。数据库表中没有用户,只有人 当我搜索使用Person的find模型创建的用户时,我希望看到返回Person类型的对象。但它的类型是用户 @person = Person.find(params[:id]) @person.class # outputs 'User' 有人能解释一下为什么它不会返回person对象。这是我们想要的行为。找到的人员行的type列包含值“User”。因此,返回的类型

我看到一个有趣的行为,想了解一些情况

我有两个模型:Person和User。用户从Person继承。数据库表中没有用户,只有人

当我搜索使用Person的find模型创建的用户时,我希望看到返回Person类型的对象。但它的类型是用户

@person = Person.find(params[:id])
@person.class 
# outputs 'User'

有人能解释一下为什么它不会返回person对象。

这是我们想要的行为。找到的人员行的
type
列包含值“User”。因此,返回的类型也是
User


请记住,
用户
也是一个
,因此您可以将任何
用户
实例视为一个
实例。

我想补充一点,当
@Person.kind of?(Person)
(应该返回true)时,可以使用
@Person.instance?(User)方法轻松测试它
应返回false:这是有意义的。谢谢