Ruby on rails Rails Parent.find方法返回类型为Child的对象
我看到一个有趣的行为,想了解一些情况 我有两个模型:Person和User。用户从Person继承。数据库表中没有用户,只有人 当我搜索使用Person的find模型创建的用户时,我希望看到返回Person类型的对象。但它的类型是用户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 = Person.find(params[:id])
@person.class
# outputs 'User'
有人能解释一下为什么它不会返回person对象。这是我们想要的行为。找到的人员行的
type
列包含值“User”。因此,返回的类型也是User
请记住,
用户
也是一个人
,因此您可以将任何用户
实例视为一个人
实例。我想补充一点,当@Person.kind of?(Person)
(应该返回true)时,可以使用@Person.instance?(User)方法轻松测试它
应返回false:这是有意义的。谢谢