現在、ActiveRecord の単一テーブル継承を使用しています。
モデルの 1 つをタイプ A から B にキャストするにはどうすればよいですか? 彼らは同じ親を持っています。
現在、ActiveRecord の単一テーブル継承を使用しています。
モデルの 1 つをタイプ A から B にキャストするにはどうすればよいですか? 彼らは同じ親を持っています。
#becomes
あなたが探しているものです:
http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-becomes
Ruby はコンパイル時に型チェックを行わないため、キャストする必要はありません。何を達成しようとしていますか?
クラスDad
、および子クラスSon
およびがあるとしDaughter
ます。
変数 @dad を使用して、Son
またはDaughter
オブジェクトのいずれかを格納し、それをDad
. 同じメソッドに応答する限り、違いはありません。これが「ダックタイピング」という概念です。
B の新しいインスタンスを作成して、A と共有する属性の値を設定します。
何かのようなもの:
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)