2

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 をフォークしてハックするか、他のソリューションを検討するつもりです。

4

3 に答える 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 に答える