問題タブ [sti]
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.
sql - 単一テーブル継承または2つのテーブル?
次の列(単語のリスト)を持つテーブルがあるとします。
ここで、「単語」ごとに翻訳を作成したいとします。何が一番いいでしょうか?2番目のテーブルがありますか?
またはすべて同じテーブルにありますか?
2つのシナリオを想定します。(1)翻訳された単語を翻訳元の単語と一緒にプルする必要がある場合、(2)翻訳された単語のみをプルする必要がある場合です。どちらのシナリオでも、「元の」単語をはるかに多く使用します(SELECTingとUPDATE / INSERTINGの両方)。
では、各シナリオ、または一般的に、どのアプローチが最適でしょうか?私は最初のアプローチに傾倒しています。それ以降、私の「デフォルト」のSELECTはlang列で修飾する必要がなくなります。どう思いますか?
ありがとう!
ruby-on-rails - 異なるデータベース テーブルでの ActiveRecord の継承
Rails でより高度なモデルを使用して調査を開始したところです。私が定期的に使用し、大きな成功を収めているのは、多対多の相互参照関係が、それ自体が多対多の関係の基本クラスのサブクラスであるクラスによってアクセスされるモデルです。
このようにして、相互参照クラスは基本クラスの代役として機能できます。
良い例は、ナビゲーション階層ノード (NavigationNode) がユーザー ロールに相互参照されている場合です。クロスリファレンス ポイントで、クラス (RoleNavigationNode) は NavigationNode から継承でき、ユーザー ロールの詳細な知識を保持できます。
私の質問 (上記の場合) は、RoleNavigationNode が NavigationNode から継承し、NavigationNode がアクセスするテーブルではなく相互参照テーブルにアクセスできるかどうかです。これはもちろん ActiveRecord を使用して行います。
私は、より適切であるかもしれない多型関連を調査していません。
前もって感謝します...、
ruby-on-rails - Railsの定数でModelインスタンスをキャッシュする際の問題
Rails アプリのモデルの 1 つで単一テーブル継承 (STI) を使用していますが、モデル オブジェクトを定数に格納する際に問題があります。問題をサンプル プロジェクトに分離し、GitHub に送信しました: http://github.com/fcoury/rails-sti-caching
私がやろうとしているのは、イニシャライザ (Rails の/config/initializers/
ディレクトリ内) にモデル インスタンス (この場合は Music モデル、STI を介して Media モデルから継承) をロードし、それを一定に保つことです:
そして、次のことを行うサンプルコントローラーがあります。
そしてそれに伴うビュー:
このコードを初めて実行すると、<pre>
タグの出力は次のようになります。
ただし、ページをリロードすると、次のように出力されます。
このエラーの背後にある理論的根拠を知っている人はいますか?
ruby-on-rails - これは Rails の単一テーブル継承の正当な使用法ですか?
20 Rails Development No-Nosに関する Chad Fowler のブログ投稿を読んだところです。単一テーブルの継承について、彼は次のようにコメントしています。
クラス名を保持する「タイプ」と呼ばれる列のストレージは、何か怪しいことが起こっていることを示すかなり良い指標です。怪しいですが、必ずしも悪いわけではありません。ただし、それを使用するときはいつでも、それが正しい解決策であるかどうかを何度も自問する必要があると思います. STI やポリモーフィックな関連付けが多い場合、データベースは本来の性能を発揮できません。
私はブログアプリケーションを書いていますが、投稿に付けられるコメントと、訪問者が私に連絡したい場合に投稿できる連絡先メッセージに STI を使用することを検討しています。私のモデルは私のMessage
モデルを継承しComment
ます。どちらも共通の属性を共有しますMessage
が、追加のsubject
フィールドがあります。もう 1 つの共通点は、両方がスパム チェックのために Akismet に送信されることです。
チャドが提案するように、それが正しい解決策であるかどうかを何度も自問するのではなく、スタックオーバーフローの専門家からも意見を得ると思いました! 私が提案していることは、STI に適しているように聞こえますか?
ruby-on-rails - 単一テーブルの継承に関連付けられた HABTM 関連付け
多くのセクションを持つ製品モデルがあり、セクションは多くの製品に属することができます。
セクション モデルには、Feature、Standard、および Option のサブクラスがあります。
私のモデルは次のとおりです。
私の製品コントローラーでは、これを行うことができます:
次のようなサブクラスにアクセスできるようにしたい:
しかし、「未定義のメソッド「機能」」などでエラーが発生するだけです。
誰でもこれを行う方法を教えてください。
ruby-on-rails - サーチロジック + STI
STI との関連付けを使用する検索ロジック検索を実装しようとしていますが、STI レコードをサブクラスではなく親として選択するという問題があります。
例:
select * from users WHERE users.company LIKE
それよりも
select * from users AS agents WHERE agents.company LIKE
ActiveRecord クラス レベルでこの問題を回避できるかどうか疑問に思っています (たとえば、アソシエーションでは、エージェントが :as=>:agent またはそれらの行に沿ってロードされることを指定できるかどうかを考えていました)、または検索ロジックにパッチを当てる必要があるか、これを達成するために他に何ができるか.
私が思いついたもう 1 つのオプションは、ユーザーの代理店のリストを含むフィールドをユーザー テーブルに追加することです。例 users.agencies => エージェンシー 1 の名前、エージェンシー 2 の名前
ruby-on-rails - 準STIオブジェクトに属するポリモーフィックオブジェクト:object_typeが正しくありません
検討:
編集:私はそこでしばらく混乱しました。これは実際にはSTIではなくEmployee
、独自のテーブルがあるため、単なる継承です。
ありがとう!
ruby-on-rails - Rails単一テーブルの継承の問題
Rails アプリで User モデルとそのサブクラスの Member、Subscriber、および Staff に対して単一テーブルの継承を設定しようとしています。
それぞれのモデル ファイルがあります: user.rb、member.rb など
ユーザーモデルが定義されています:class User < ActiveRecord::Base; end;
私は他のモデルをサブクラス化しました: などclass Member < User; end;
。
私の users テーブルには、すべてのクラスが必要とするすべてのフィールドと type フィールドがあります。コンソールに移動して、たとえばメンバーまたはサブスクライバーの新しいインスタンスを作成しようとすると、次のエラーが発生します。
TypeError: can't dup NilClass
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2184:in 'dup'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2184:in 'scoped_methods'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2188:in 'current_scoped_methods'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2171:in 'scoped?'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2439:in 'send'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2439:in 'initialize'
from (irb):6:in 'new'
from (irb):6
Rails は、サブクラス モデルがそこにあることを認識しています。これは、コンソールで単に Member または Subscriber を呼び出すと、クラス定義が返されるためです。
簡単なドキュメントを読みましたが、何か足りないのでしょうか?