代码之家  ›  专栏  ›  技术社区  ›  fotanus

如何在使用STI时将ActiveRecord对象强制转换为另一个类?

  •  22
  • fotanus  · 技术社区  · 14 年前

    我怎样才能把我的一个模型从A型转换成B型?他们有相同的父母。

    3 回复  |  直到 11 年前
        2
  •  5
  •   Raffael    11 年前

    假设你有课 Dad ,和子类 Son Daughter .

    女儿 . 只要他们对相同的方法作出反应,就没有区别。这是一个被称为“duck typing”的概念。

        3
  •  0
  •   Syed Samiuzzaman    4 年前

    如果我们有类似的事情

    class A < ApplicationRecord
    end
    
    Class B < A
    end
    

    我们可以使用

    a = A.first
    b = a.becomes(B)
    

    反之亦然

        4
  •  -2
  •   bjg    14 年前

    比如:

    class C < ActiveRecord::Base
    end
    
    class A < C
    end
    
    class B < C
    end
    
    @a = A.new(...)
    @b = B.new(@a.attr1, @a.attr2, ..., @a.attrN)