私はクラステーブル継承宝石(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. クラステーブル継承(CTI)とInsert Selectステートメント
- 2. Railsモデル継承
- 3. 継承:メソッド
- 4. 単一のテーブル継承エンティティがクラステーブル継承エンティティを拡張できますか?
- 5. Railsモデルの継承?
- 6. CSS疑似クラス継承
- 7. 継承、疑似多型
- 8. BuildManager継承の継承
- 9. データ継承の継承
- 10. 継承:親ポインタから継承したメソッドを使用する
- 11. Ruby on Railsのクラス継承
- 12. Rails単一テーブル継承
- 13. Rails STI検証継承
- 14. カプセル化と継承のメソッド
- 15. 静的メソッドの継承
- 16. Java継承:@Overrideメソッドのエラー
- 17. C#のToStringメソッドの継承
- 18. Javascript単純継承メソッド
- 19. メソッドObjective Cの継承
- 20. Entity Frameworkとの継承継承
- 21. Java ORM:複数(継承)継承
- 22. CSSが継承しない継承
- 23. 継承する継承するインターフェイス
- 24. 継承
- 25. 継承
- 26. 継承
- 27. 継承されたメソッドを模擬する方法
- 28. Doctrine 2 - クラステーブル継承、種類によって選択
- 29. クラステーブルの継承モデルを使用したフォームの処理
- 30. Rails - 単一テーブル継承 - 欠陥のあるキャストアプローチ?
そして、どのように乗っているのか教えてください。他の人の経験を知りたいです! –