私はクラステーブル継承宝石(https://github.com/brunofrank/class)を使用するために既存のRailsアプリケーションの一部を修正しています型継承)。私のスーパークラス - Personには、すべてのサブクラスがアクセスできる必要があるいくつかのインスタンスメソッドを定義したことを除いて、すべてうまくいっています。たとえば、姓と名が連結されたfull_name
、または最初の姓と名字を返すcite_name
が返されます。 CTIの宝石は実際にはRubyの継承を使用していない(すべてのサブクラスはまだActiveRecord :: Baseから継承しており、宝石はActiveRecordのフィールドを一緒にリンクするためのいくつかのファンドを行います)、私はサブクラスでこれらのメソッドにアクセスできません作成した。これを回避するためのあらゆる考え?私はSTIに興味はありませんが、このCTI宝石をフォークしたり、ハックしたり、他のソリューションを見ていきたいと思います。ちょうど私の頭の上からRailsクラステーブル継承宝石、擬似継承、欠落メソッド
2
A
答えて
1
try http://peterhamilton.github.com/citier、それはCITIEsForRAILSに基づいています。私は&を急いで開発し、さまざまな変更を加えました。それは、それが持っていたすべてのバグではないにしてもほとんどを修正し、簡単に動作します。
0
、あなたのサブクラスの移行テーブルにあなたが行を持っている必要があることを見ました:あなたのModel.rbファイル
class Product < ActiveRecord::Base
acts_as_superclass # I'm guessing you might be missing this line??
end
class Book < ActiveRecord::Base
inherits_from :product
end
で
create_table :videos, :inherits => :product do |t|
も
+0
oops。 create_table:books、... – horseshoe7
0
私は新しいCITIEsForRAILS gem(クラス継承&テーブル継承埋め込みはRAILSのため、https://github.com/altrabio/CITIEsForRAILSを参照してください)はあなたが望むものを正確に行うと思います。この宝石は、CTI、STI、&マルチテーブル継承を継承しながら、Rubyクラスの継承を維持します。
関連する問題
- 1. Doctrine2クラステーブル継承エンティティID
- 2. Doctrine 2 - クラステーブルの継承マッピングクラスの継承マッピングストラテジー
- 3. クラステーブル継承(CTI)とInsert Selectステートメント
- 4. 教義クラステーブル継承プロパティは、クエリ
- 5. クラステーブル継承の子プロパティのDoctrine2フィルタクエリ
- 6. Railsモデル継承
- 7. 単一のテーブル継承エンティティがクラステーブル継承エンティティを拡張できますか?
- 8. 継承:メソッド
- 9. java継承メソッド
- 10. Railsモデルの継承?
- 11. CSS疑似クラス継承
- 12. 継承、疑似多型
- 13. Initメソッドの継承
- 14. メソッド注釈継承
- 15. BuildManager継承の継承
- 16. クラス継承とインターフェイス継承
- 17. データ継承の継承
- 18. テンプレートを継承した継承継承メンバ
- 19. 継承:親ポインタから継承したメソッドを使用する
- 20. Rails STI検証継承
- 21. Rails単一テーブル継承
- 22. Ruby on Railsのクラス継承
- 23. Java継承:@Overrideメソッドのエラー
- 24. カプセル化と継承のメソッド
- 25. Python継承とメソッドのオーバーライド
- 26. 参照クラス継承メソッド
- 27. パイソン - 継承されたメソッド
- 28. pythonクラスのメソッドと継承
- 29. Javascript単純継承メソッド
- 30. C#のToStringメソッドの継承
そして、どのように乗っているのか教えてください。他の人の経験を知りたいです! –