問題タブ [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.
ruby-on-rails - ヴァージン STI ヘルプ
私は競馬アプリケーションに取り組んでおり、STI を利用して馬のつながりをモデル化しようとしています。馬のコネクションは、所有者、調教師、騎手で構成されています。時間の経過とともに、接続はさまざまな理由で変化する可能性があります。
- 馬は別の所有者に売却されます
- オーナーが調教師や騎手を交代
- 馬は新しい所有者によって主張されています
現在のところ、次の表でこれをモデル化しています。
- 馬
- 接続 (結合テーブル)
- 利害関係者 (利害関係者には、ジョッキー、トレーナー、所有者の 3 つのサブクラスがあります)
ここに私のクラスと協会があります:
データベース側で、接続テーブルに Type 列を挿入しました。
これを正しくモデル化しましたか。より良い/よりエレガントなアプローチはありますか? フィードバックをお寄せいただきありがとうございます。
ジム
ruby-on-rails - attr_protected をオーバーライドするには?
次のようにSTIを実装しています。
ユーザーの自動車のリストを作成しています。自動車ごとに、UI は自動車にtype
関連付けられたフィールドとプロパティを設定します。フォームの送信中、このtype
フィールドは保護された属性であるため無視されます。
この問題を回避するにはどうすればよいですか? unprotect
保護された属性への宣言的な方法はありますか?
編集:
これは問題に対する私の現在の解決策です:attributes_protected_by_default
モデルクラスのプライベートメソッドをオーバーライドします。
type
これにより、フィールドが保護リストから削除されます。
これよりも良い方法があることを願っています。
ruby-on-rails - 複数の ActiveRecord の「belongs_to」が同じクラスを指していても問題ありませんか?
スポーツ イベントを 2 つのチームに関連付ける場合、最初はこれが理にかなっているように見えました。
ただし、アクティブ レコード モデルでそれをどのようにリンクするかという問題があります。
それが最善の解決策ですか?
同様の質問への回答で、単一テーブルの継承を指摘され、その後、ポリモーフィックな関連付けが見つかりました。どちらもこの関連付けに適合しないようでした。おそらく私はこれを間違って見ていますが、チームをホームチームとアウェイチームにサブクラス化する必要はないと思います。区別はゲームがプレイされる場所だけにあるからです。単一のテーブル継承を使用した場合、各チームがイベントに所属したくないので、これは機能しますか?
それは私が達成したいことに対してあまりにも多くの仕事のように思えました.
has_many スルー アソシエーションについても考えましたが、必要なチームは 2 つだけなので 2 つのように思えますが、これらの 2 つのチームはどのイベントにも属していません。
アクティブなレコードでこれらの関連付けを作成するための、より明確なセマンティックな方法はありますか? または、これらのソリューションのいずれかが最良の選択ですか?
ありがとう
ruby-on-rails - Railsの単一テーブルの継承/サブクラスは、親で条件を検索します
ユーザー ( class User < ActiveRecord::Base
) と呼ばれるテーブルと、クライアント ( class Client < User
) 用のそのサブクラス/STI があります。
クライアントの「フィルタリング」は期待どおりに機能します。つまり、Client.find(:all) はすべてのクライアントを検索するように機能します。
ただし、ユーザーの場合は、結果をフィルタリングして、クライアントではないユーザー (タイプが null または空白) のみを検索する必要があります。
インデックスコントローラーで次のことを試しましたが、タイプに何を入れても、タイプに関係なくすべてのユーザーが返されます。
この状態を機能させる方法の手がかりはありますか?
ありがとう!
ruby-on-rails - ネストされた属性を継承と組み合わせて使用できますか?
私は次のクラスを持っています:
- 計画
- 人
- 人>開発者
- 人>マネージャー
Project
モデルに次のステートメントを追加しました。
そしてもちろん、クラス内の適切なステートメントPerson
。メソッドを介してをに追加するDeveloper
にはどうすればよいですか?以下は機能しません。Project
nested_attributes
ご覧のとおり、type
属性はnil
の代わりにに設定されています"Developer"
。
ruby-on-rails - 2つのモデル、1つのSTIと検証
たとえば、ProductsとOrdersの2つのテーブルがあるとします。簡単にするために、一度に購入できる製品は1つだけであるため、order_itemsのような結合テーブルはないと仮定します。つまり、Productには多くの注文があり、Orderは製品に属しているという関係です。したがって、product_idはOrderテーブルのfkです。
製品テーブルはSTIで、サブクラスはA、B、Cです。
ユーザーがサブクラスProductCを注文する場合、Orderモデルフィールドorder_detailsとorder_statusで2つの特別な検証をチェックする必要があります。これらの2つのフィールドは、他のすべてのProductサブクラス(つまり、AとB)ではnilにすることができます。つまり、ユーザーがAとBを購入するときに、これら2つのフィールドに対して検証を実行する必要はありません。
私の質問は:
Orderモデルに検証(おそらくカスタム)を記述して、ProductサブクラスCへのfk_idがordersテーブルに保存されているときに、OrderモデルがITSの2つのフィールド(order_detailsとorder_status)の検証のみを実行することを認識できるようにするにはどうすればよいですか? ?
ruby-on-rails - STI と多形
コードに問題がある
そして、いくつかの NewsArticle のコメントを取得しようとすると、ログに次のようなものが表示されます
"commentable_type" = 'Post'というのは奇妙です。どうしたの?
PS: Rails 2.3.5 && ruby 1.8.7 (2010-01-10 パッチレベル 249) [i686-darwin10]
mysql - 既存のテーブルへの STI の追加
カスタム タイプの列を使用して、既存のテーブルに STI を追加したいと考えています。対応するモデルがフルーツであるこの味のタイプを呼び出しましょう。
Fruit モデルには次のものがあります。
STI を追加するための移行では、次のものがあります。
移行を実行すると、次のエラーが表示されます。
何が起こっているのか分かりますか?Fruit モデルの set_inheritance_column にコメントを付け、移行の実行後にコメントを解除すると、移行を実行できます。明らかに、私はこれをしたくありませんが。
ruby-on-rails - 子オブジェクトを返す方法は?
私が持っているのは-私が思うに-簡単な質問です。これが私のコードです:
すべてのSTIが正しく設定されており、テーブルには複数の種類のAppleレコードとKiwiレコードがあると想定します。ここから...
...フルーツの配列からリンゴだけの配列を返すにはどうすればよいですか?
ruby-on-rails - 携帯電話料金のモデル化: 単一テーブルの継承またはポリモーフィックな関連付けを使用する必要がありますか?
私のドメインでは:
- ユーザーは多くの請求書を持っています
- Bills には多くの BillItems があります (したがって、Users には Bills を介して多くの BillItems があります)。
- すべての BillItem は次のいずれかです。
- 電話
- SMS(テキストメッセージ)
- MMS (マルチメディア メッセージ)
- データ
個々の BillItem のプロパティは次のとおりです (一部は一般的です)。
代替テキスト http://dl.dropbox.com/u/2792776/screenshots/2010-04-13_2146-1.png
私の質問は、単一テーブルの継承 (つまり、"type" 列を持つ 1 つの "bill_items" テーブル) またはポリモーフィズム (BillItem タイプごとに個別のテーブル) でこの配置をモデル化する必要があるかどうか、およびその理由です。