Class-Table-Inheritance gem (https://github.com/brunofrank/class-table-inheritance) を使用するように、既存の Rails アプリの一部を変更する作業を行っています。すべて問題ありませんが、すべてのサブクラスがアクセスできるようにする必要があるスーパークラスである Person にいくつかのインスタンス メソッドを定義しました。たとえばfull_name
、連結された名と姓を返す 、またはcite_name
のイニシャルと姓を返します。CTI gem は実際には Ruby の継承を使用していないため (すべてのサブクラスは引き続き ActiveRecord::Base から継承され、gem は ActiveRecord フィールドをリンクするためにいくつかのファンキーなブードゥーを実行します)、サブクラスでこれらのメソッドにアクセスすることはできません。作成した。これを回避するための考えはありますか?私は STI には興味がありませんが、この特定の CTI gem をフォークしてハックするか、他のソリューションを検討するつもりです。
3 に答える
1
http://peterhamilton.github.com/citerを試してみてください。これは CITIEsForRAILS に基づいています。フォークして、急速な開発やその他のさまざまな変更を加えました。すべてではないにしても、ほとんどのバグが修正され、非常に簡単に機能します。
于 2011-04-29T14:11:34.310 に答える
0
私の頭のすぐ上で、サブクラスの移行テーブルに次の行が必要であることがわかりましたか?
create_table :videos, :inherits => :product do |t|
また、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
于 2011-02-07T12:10:45.767 に答える
0
真新しい CITIEsForRAILS gem (Class Inheritance & Table Inheritance EmbeddingS For RAILS、https://github.com/altrabio/CITIEsForRAILSを参照) はまさにあなたが望むことを行うと思います。この gem は、Ruby クラスの継承を維持しながら、CTI、STI、および複数テーブルの継承を拡張します。
于 2011-02-16T15:59:33.980 に答える