問題タブ [multi-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 - ネストされたフォームで複数のテーブル継承を実装する場合、「保護された属性を一括割り当てできません」
こんにちは、アプリケーションに MTI を実装しようとしています。Person モデルと、それを継承する 2 つのモデルがあります。Client と TeamMember です。チーム メンバーを作成するときに、人物 (姓名、電子メールなど) とチーム メンバー (経験レベル、チームのタイプ、リードかどうか) の両方の値をデータベースに保存したいと考えています。ネストされた属性フォームを使用しているため、チーム メンバー フォームで個人フィールドをネストしています。残念ながら、保存しようとすると「保護された属性を一括割り当てできません:人」というエラーが表示されます。これを解決する方法を誰か教えてもらえますか? ありがとう!モデル:
UPDATED TeamMember クラスですが、同じエラー で people_attributes と person_attributes も試行されましたが、これらはどれも機能しませんでした
コントローラは次のとおりです。
とビュー:
UPDATED TeamMembersController (Tiago のご厚意による解決策)
hibernate-entitymanager - @NaturalId はルートエンティティ (またはその @MappedSuperclasses) でのみ有効で、結合された複数のテーブル継承で Natural Id を使用します
基本的に、ルート例外「@NaturalId only valid on root entity (またはその @MappedSuperclasses)」を検索タブに貼り付けるだけで、Googleで同様の問題を見つけることができません。結合された複数テーブルの継承戦略を使用して、抽象的な親( Person )を含む具象/子エンティティ( Student、Employee ) をデータベース内の 3 つのテーブルにマップしていますが、これまでのところ問題はありませんでした。 Student のStudentIdを使用して、私の Student Entity のカスタム クエリを実装する必要があります。. 基になる Hibernate-session を Entity-manager から抽出することに成功し、最愛の HibernateSession から必要なメソッドを明確に確認して使用できるようになりました (Hibernate には (byId、byNaturalId などの) naturalIds のメソッドがあることは誰もが知っています)。 )、これらの種類のメソッドは、エンティティのクエリに非常に役立ちます。そのため、studentId データ メンバーに@NaturalIdでアノテーションを付けるまで..何らかの操作 (保存/作成) を実行すると、複数行の例外がスローされます。そして根本的な原因は..
追加情報としてエンティティのコードを貼り付けます
Parent抽象基本クラス
人物クラス
Entityサブクラス
学生クラス
質問: さまざまな学生エンティティに対して一意のクエリを作成するためにできることはありますか? Hibernate の naturalId メソッドは、get や update などのエンティティを操作するのに非常に便利だからです。
エンティティとデータベース テーブルを使用して設計を犠牲にすることなく、目的を達成するための回避策はありますか? 可能であれば、studentId を naturalId として機能させたいと考えています。提案/ヘルプ/コメントをお願いします。どんなことでも大歓迎です。
sql - データベースレベルでのRailsマルチ継承
Railsアプリケーションのマルチテーブル継承に沿って何かを実装したいと思います。私は STI のしくみに精通しており、実装が似ているかどうか疑問に思っていました。
私の状況は次のとおりです(テーブルの名前は変更されています):
テーブル Employee があり、Employee には多くの用務員とプログラマーがいます。用務員とプログラマーはさまざまな種類の作業道具を持っているため、管理用テーブルは用務員に、技術用テーブルはプログラマーに適しています。仕事は無限にある可能性があり、仕事の属性 (用務員、プログラマーなど) は異なるため、別のテーブルにする必要があります。Employee の下にある Jobs というテーブルを統合したいと考えています。このテーブル Jobs には、job_type (管理人またはプログラマーのいずれか) と utensil_type (管理人、技術者) があります。このシナリオが達成しようとしていることを適切に実装するにはどうすればよいですか?
STIにとって型がいかに重要かを知っているので、レールの問題にこのMTIを実装する方法を知りたいですか?
ruby-on-rails - 複数の外部キーとデータベース制約を使用した Rails ポリモーフィック アソシエーション
マルチテーブルの継承とデータベースの制約で遊んでいます。Railsの哲学は、データベースではなくコードで制約を処理することであることは知っていますが、両方を行いたいと思っています。ポリモーフィックな関連付けについても知っていますが、制約を強制することはできません。
したがって、これが私のシナリオです。ガイドのようにimageable_type
andを使用する代わりに、 and を使用したいと思います(私の場合、外部キーは2つしかありません)。これにより、ここで説明したような制約を作成できます。imageable_id
employee_id
product_id
しかし、今、問題があります。条件付きの関係を作成する必要がありますが、Rails はそのためのものを提供していないようです。imageable
どのフィールドが入力されているかに応じて、製品または従業員にリンクされている関係が必要です。
Railsでそれを行う方法について何か提案はありますか? 私は SQL で制約を行う方法を知っています。私の質問は、このポリモーフィックな関係を Rails でどのように実装できるかです。
繰り返しますが、データベースの制約なしでそれを行う方法は知っていますが、データベースの制約はまさに私の質問のポイントです:)
python - 親を作成するDjangoマルチテーブル継承
たとえば、次のような場合:
では、生徒だけを作成することは可能ですが、メール、パスワード、および名前は、学校にリンクされるだけでなく、User テーブルと User モデルに入りますか?
データベースでは、User テーブルにbの User 属性が表示され、Student テーブルに Student 属性が (1 対 1 の関係で) 表示されます。
再度、感謝します :)
(私がそれを試していない理由は、何かがうまくいかないかもしれないからです.私は物事をテストするときに注意を払っていなかったので、プロジェクト全体を約6回リセットする必要がありました:( )
ああ、私は 2 よりも Python 3 を使うべきですか? 私は現在2を使用していますが、実際には3を深く使用していません。また、Djangoも初めてです(したがって、すべての質問があります)。3 は Django 開発により適していますか?
ruby-on-rails - マルチテーブル継承クエリ
設定:
Aさんはモデル
- 属性付き [name, email, actable_id, actable_type]
B と C は A のサブタイプです (MTI 関係として)
A.rb
すぐに戻る
C.rb
問題: タイプ B のクエリは、C を含む、親 A を持つすべてのテーブル エントリで返されます。
django - djangoのマルチテーブル継承で親オブジェクトを取得する方法
複数テーブルの継承を使用する次の 2 つのモデルがあります。PlayerAchievment は、OverallAchievment を拡張します。
PlayerAchievement 子関数の親の一致属性に関する情報を取得したい。
それ、どうやったら出来るの?
django - Django 1.9: フィールドが親モデルに存在しないフィールドのフィールドと衝突する
Profile、Certifier、および Designer といういくつかの単純なモデルがあり、後者の 2 つは Profile から継承されます (複数テーブルの継承)。Designer には、Certifier への外部キーがあります。
Django 1.8 ではこれは完全に機能しますが、1.9 では次のようになります。
django.core.management.base.SystemCheckError: SystemCheckError: システム チェックでいくつかの問題が特定されました:
エラー:
check.Designer.certifier: (models.E006) フィールド 'certifier' は、モデル 'check.profile' のフィールド 'certifier' と衝突します。
(この場合、Profile.type は関係ありません。ログインしているユーザー プロファイルの種類を区別するために必要なだけです)。
check.profile には明らかにフィールド「認証者」がありません。これはバグですか、それとも何か見逃していますか? 別のプロジェクトでも同じことが起こります。