【问题标题】:Rails Parent.find method returns object of type ChildRails Parent.find 方法返回 Child 类型的对象
【发布时间】:2013-02-19 02:23:55
【问题描述】:

我看到了一个有趣的行为,想了解一下。

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails inheritance model find


    【解决方案1】:

    这是期望的行为。找到的人员行的type 列包含值“用户”。因此返回的类型也是User

    记住User 也是Person,因此您可以将任何User 实例视为Person 实例。

    【讨论】:

    • 我要补充一点,当@person.instance_of?(User) 应该返回 false 时,可以使用方法 @person.kind_of?(Person)(应该返回 true)轻松测试它:stackoverflow.com/questions/3893278/…
    • 这是有道理的。谢谢!
    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多