14

書籍「アジャイルWeb開発とレール」第4版(http://pragprog.com/book/rails4/agile-web-development-with-rails )を読み終えたところですが、作成方法を理解するのに助けが必要です。モデル間の親子関係。私はいくつかのグーグルを行い、StackOverflowでこの辺りを突いて、単一テーブル継承とクラステーブル継承について一般的に学びました。

アーカイブコレクション内のさまざまなアイテムに関するメタデータがたくさんあります。メタデータの多くは、受入番号、タイトル、説明、著作権など、すべてのオブジェクトで同じです。一般的なメタデータに加えて、特定の種類のアイテムにのみ適用できるメタデータがあります。たとえば、写真を保持する必要があります。アイテムがカラーであるか白黒であるかを追跡します。録音物は、フォーマット(CD、DAT、カセットテープなど)と長さを追跡する必要があります。テキスト資料はページ数を追跡する必要があります。等

       Class hierarchy

            Item
              |
  +-----------+------------+
  |           |            |
Photo   SoundRecording    Text

何千ものレコードがあるので、単一テーブル継承は非効率的すぎるとして除外しました。http://martinfowler.com/eaaCatalog/classTableInheritance.htmlに示されているように、クラステーブル継承の概念を理解していますが、これを新しいRubyonRailsプロジェクトに実際に実装する方法について混乱しています。クラステーブル継承をポリモーフィックアソシエーション(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)として実装しますか、それとも間違った方向に進んでいますか?

ありがとうございました。

4

2 に答える 2

6

はい。これに要約されます(Rails 3で)

class Business < ActiveRecord::Base
  belongs_to  :biz, :polymorphic => true
end

class Restaurant < ActiveRecord::Base
  acts_as_biz
end

これは、その方法に関する非常に優れたチュートリアルです。

http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/

于 2012-07-04T09:32:08.990 に答える