問題タブ [single-table-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
562 参照

castle-activerecord - Castle Activerecord で Class Table と Single Table の両方の継承を使用しますか?

Castle Activerecord (NHibernate の上) では、クラス テーブルの継承をグローバルに使用し、継承ツリーの一部で単一のテーブルの継承を使用することは可能ですか? 私は次のようなことをしたいと思います

すべての共通の「もの」(名前、説明など) が「モデル」テーブルにあるように、「コンテナ」テーブルで STI を使用できます。それとも、これは時間の無駄であり、すべてのために STI に行く必要がありますか?

前もって感謝します、ジム

0 投票する
1 に答える
698 参照

ruby-on-rails - 単一テーブルの継承: 階層内のすべてのクラスは同じプロパティを持つ必要がありますか?

私は次のものを持っています

移行に伴い

デフォルトでは、description プロパティは Item クラスと Talk クラスで使用できます。Talk クラスでのみ使用できるようにプロパティを制限する方法はありますか?

0 投票する
2 に答える
1016 参照

php - 単一テーブルの継承の問題を推進する

schema.xml ファイルで抽象として定義されている「talk」というテーブルがあります。

4 つのオブジェクト (クラスキーごとに 1 つ) を生成します: コメント、評価、レビュー、チェックイン

TalkPeer も生成しますが、他の 4 つのピア (CommentPeer、RatingPeer、ReviewPeer、CheckinPeer) は生成できなかったので、手動で作成し、BaseTalkPeer を継承する TalkPeer.php を継承するようにしました。次に、これらの各ピアに getOMClass() を実装しました。

問題は、4 つのピアを使用してクエリを実行すると、4 つのタイプのオブジェクトすべてが返されることです。つまり、ReviewPeer は Visits、Ratings、Comments、および Reviews を返します。

例:

これにより、値が 5 を超えるすべてのコメント、評価、レビュー、およびチェックインが返されます。

ReviewPeer は Review オブジェクトのみを返す必要があり、これを行う方法がわかりません。

クラスキーを手動で指定するには、実際にすべての基準を調べて変更する必要がありますか? Peer の名前はすでに異なるため、これは少し無意味に思えます。各ピアをカスタマイズする必要はありません。TalkPeer はすべて継承しているので、TalkPeer だけをカスタマイズできるはずです...方法がわかりません。

TalkPeer だけで doSelectStmt を変更して、自動的に CLASSKEY 制限を基準に追加しようとしました。それはほとんど動作しますが、次のように表示されます: Fatal error: Cannot instantiate abstract class Talk in /models/om/BaseTalkPeer.php on line 503. Line 503 is in BaseTalkPeer::populateObjects(), and is in the 3rd line below:

ドキュメントは、 BaseTalkPeer::populateObject()のオーバーライドについて話しました。それが私の問題だと感じていますが、ソースコードを読んだ後でも、それを機能させる方法を理解できませんでした。

これが私がTalkPeer::doSelectStmtで試したことです:

以下は、ReviewPeer の getOMClass メソッドの例です。

これが私のスキーマの関連ビットです:

PS - いいえ、1.3 から 1.4 にアップグレードできません。再テストが必要なコードが多すぎる

0 投票する
2 に答える
708 参照

ruby-on-rails - 単一テーブル継承の問題があるレールとホーボー

db:setupクリーンなデータベースを使用してHoboプロジェクトを実行すると、エラーが発生します。AとBの2つのモデルがあり、Bは単一テーブル継承を通じてAを拡張します。すべてを作成することは機能します。しかし、新しいデータベースから始めると、rakeはエラーで失敗します。

これを再現するために私が行った手順は次のとおりです。まず、Hoboアプリを作成します。

最初のモデルを作成しますA

database.ymlをセットアップし、移行を生成して実行します。

2番目のモデルを作成しますB

モデルを編集しBて拡張しAます。

移行を生成して実行します。

出来上がり。すべて正常に動作します。ここで、すべてのテーブルを削除して実行するdb:setupと、失敗します。

Ruby on Railsの単一テーブル継承(STI)とユニットテストの問題(PostgreSQLを使用)での提案に従って、とを削除しようtest/fixtures/as.ymltest/fixtures/bs.ymlしましたが、それは役に立ちませんでした。

ホーボー0.9.103
レール2.3.5
レーキ
0.8.7jruby1.4.0RC1

助言がありますか?

0 投票する
1 に答える
2012 参照

ruby-on-rails - 複数レベルの階層と単一のテーブル継承を持つ has_many

私の Rails アプリには、次のようなマルチレベルの階層があります。

次に、次のように中間レベルを参照するクラスがあります。

この単純化した例では、単一のテーブル継承を有効にするために、 vehicle テーブルに type 列を指定しました。さらに、has_many 関係を有効にするために、garage_id 列が含まれています。新しいガレージを作成して車とバスを追加すると、すべてが期待どおりにデータベースに追加されます。しかし、後でガレージ オブジェクトを取得し、road_vehicles コレクションを調べると、空です。誰が私が間違っているのか教えてもらえますか?

0 投票する
3 に答える
10422 参照

spring - Spring:@Controllerアノテーションを使用したコントローラーの継承

Springアプリで、ユーザーが登録ユーザーかどうかを判断するベースコントローラーを作成できるようにしたいと思います。このベースコントローラーには、テンプレートデザインパターンに従って、コントローラーサブクラスが実装する抽象保護メソッドが含まれます。

抽象メソッドは、登録されているかどうかに関係なく、Userのインスタンスを渡します。ただし、純粋に@Controllerアノテーションを使用してコントローラーを使用することにより、各コントローラーは自由に要求処理メソッドを自由に定義できるように見えるため、これをどのように行うかはわかりません。

各コントローラーに注入され、ユーザーの検証に使用されるある種のユーザーサービスクラスを作成することは、これを回避する1つの方法でしょうか?これは(少なくとも私にとっては)そのようなコントローラーがHttpServletRequestまたはSessionオブジェクトをどのように取得するのかという疑問を投げかけます。

ありがとう。

0 投票する
2 に答える
3090 参照

ruby-on-rails - ONEフォームを使用したRails STI

さまざまな形式のファイルをストリームに追加できるフォームがあります。したがって、ストリームは多くのファイルで構成されています。これらのファイルは XML ファイルですが、基本的に異なるスキーマを持っています。ユーザーが必要なファイルを追加できるフォームが 1 つあります。STI を使用しています (データが既にテーブルにある場合にうまく機能します)。問題はテーブルにデータを追加することです。

フォームには 1 つの入力フィールドがあり、ユーザーがアップロードするファイルを選択できるようにする file_field だけです。正しいオブジェクトをインスタンス化できないフォームが 1 つしかないため、プログラムで実行する必要があります。その方法がわかりません。

type属性が提供されているため、フォームが送信されたときにレールがオブジェクトの書き込みタイプをインスタンス化するように、可能なタイプのドロップダウンを追加し、そのフィールドを「タイプ」と呼ぶだけですか?

これのベストプラクティスは何ですか..レール2.3.4を実行しています。

0 投票する
1 に答える
87 参照

linq-to-sql - linq to sql と継承の問題

特定のタイプの継承コードを取得する方法を知っている人はいますか (Linq から sql への単一テーブルの継承)。

(A から継承された) 新しいエンティティ B を作成するとき、A から継承されたすべてのオブジェクトに有効なコードを A に書きたいと思います。

ただし、新しいエンティティ B を作成するとき、その継承コードはまだ入力されていません。タイプに基づいて継承コードを取得する方法はありますか? Table クラスに metaTable プロパティがあることは知っていますが、それは非公開であり、クラスは封印されています。

0 投票する
2 に答える
924 参照

ruby-on-rails - 複数の異なる Rails モデルから「フィード」を作成する

いくつかの異なるモデル (チケット、投稿、レポートなど) を持つアプリケーションに取り組んでいます。モデルごとにデータが異なるため、すべてのモデルから、最新の 10 個のエントリ (すべてのデータの組み合わせ) を表示する「フィード」を作成したいと考えています。

これについて最善の方法は何ですか?ユーザーにチケットが割り当てられたとき、または新しいレポートが投稿されたときに、新しいフィード モデルを作成してそのテーブルに書き込む必要がありますか? また、STI を使用してモデル参照のテーブルを作成したり、データを集約するクラス メソッドを作成したりすることも検討しています。どの方法が最も効率的かはわかりません...

0 投票する
1 に答える
213 参照

ruby-on-rails - AuthlogicとSTIを使用してアクションレベルの保護を取得するにはどうすればよいですか?

単一のユーザー分類にbefore_filterを使用する方法が十分に文書化されていることを考えると、複数のユーザータイプのアクションレベルの保護を取得するのに問題があります。説明させてください:

私はこのようなものを持っています...

また、GuardiansControllerでは、Administratorの標準アクションのみを許可したいのですが、他のすべてのアクションにはGuardianが必要です。だから私はこれを試しました...

これは、再帰的なリダイレクトを実行することになります。より良い方法があるに違いありませんか?