問題タブ [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.

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

sql - 単一テーブル継承または2つのテーブル?

次の列(単語のリスト)を持つテーブルがあるとします。

ここで、「単語」ごとに翻訳を作成したいとします。何が一番いいでしょうか?2番目のテーブルがありますか?

またはすべて同じテーブルにありますか?

2つのシナリオを想定します。(1)翻訳された単語を翻訳元の単語と一緒にプルする必要がある場合、(2)翻訳された単語のみをプルする必要がある場合です。どちらのシナリオでも、「元の」単語をはるかに多く使用します(SELECTingUPDATE / INSERTINGの両方)。

では、各シナリオ、または一般的に、どのアプローチが最適でしょうか?私は最初のアプローチに傾倒しています。それ以降、私の「デフォルト」のSELECTはlang列で修飾する必要がなくなります。どう思いますか?

ありがとう!

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

ruby-on-rails - 異なるデータベース テーブルでの ActiveRecord の継承

Rails でより高度なモデルを使用して調査を開始したところです。私が定期的に使用し、大きな成功を収めているのは、多対多の相互参照関係が、それ自体が多対多の関係の基本クラスのサブクラスであるクラスによってアクセスされるモデルです。

このようにして、相互参照クラスは基本クラスの代役として機能できます。

良い例は、ナビゲーション階層ノード (NavigationNode) がユーザー ロールに相互参照されている場合です。クロスリファレンス ポイントで、クラス (RoleNavigationNode) は NavigationNode から継承でき、ユーザー ロールの詳細な知識を保持できます。

私の質問 (上記の場合) は、RoleNavigationNode が NavigationNode から継承し、NavigationNode がアクセスするテーブルではなく相互参照テーブルにアクセスできるかどうかです。これはもちろん ActiveRecord を使用して行います。

私は、より適切であるかもしれない多型関連を調査していません。

前もって感謝します...、

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

ruby-on-rails - Railsの定数でModelインスタンスをキャッシュする際の問題

Rails アプリのモデルの 1 つで単一テーブル継承 (STI) を使用していますが、モデル オブジェクトを定数に格納する際に問題があります。問題をサンプル プロジェクトに分離し、GitHub に送信しました: http://github.com/fcoury/rails-sti-caching

私がやろうとしているのは、イニシャライザ (Rails の/config/initializers/ディレクトリ内) にモデル インスタンス (この場合は Music モデル、STI を介して Media モデルから継承) をロードし、それを一定に保つことです:

そして、次のことを行うサンプルコントローラーがあります。

そしてそれに伴うビュー:

このコードを初めて実行すると、<pre>タグの出力は次のようになります。

ただし、ページをリロードすると、次のように出力されます。

このエラーの背後にある理論的根拠を知っている人はいますか?

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

ruby-on-rails - これは Rails の単一テーブル継承の正当な使用法ですか?

20 Rails Development No-Nosに関する Chad Fowler のブログ投稿を読んだところです。単一テーブルの継承について、彼は次のようにコメントしています。

クラス名を保持する「タイプ」と呼ばれる列のストレージは、何か怪しいことが起こっていることを示すかなり良い指標です。怪しいですが、必ずしも悪いわけではありません。ただし、それを使用するときはいつでも、それが正しい解決策であるかどうかを何度も自問する必要があると思います. STI やポリモーフィックな関連付けが多い場合、データベースは本来の性能を発揮できません。

私はブログアプリケーションを書いていますが、投稿に付けられるコメントと、訪問者が私に連絡したい場合に投稿できる連絡先メッセージに STI を使用することを検討しています。私のモデルは私のMessageモデルを継承しCommentます。どちらも共通の属性を共有しますMessageが、追加のsubjectフィールドがあります。もう 1 つの共通点は、両方がスパム チェックのために Akismet に送信されることです。

チャドが提案するように、それが正しい解決策であるかどうかを何度も自問するのではなく、スタックオーバーフローの専門家からも意見を得ると思いました! 私が提案していることは、STI に適しているように聞こえますか?

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

ruby-on-rails - 単一テーブルの継承に関連付けられた HABTM 関連付け

多くのセクションを持つ製品モデルがあり、セクションは多くの製品に属することができます。

セクション モデルには、Feature、Standard、および Option のサブクラスがあります。

私のモデルは次のとおりです。

私の製品コントローラーでは、これを行うことができます:

次のようなサブクラスにアクセスできるようにしたい:

しかし、「未定義のメソッド「機能」」などでエラーが発生するだけです。

誰でもこれを行う方法を教えてください。

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

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 の名前

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

ruby-on-rails - 準STIオブジェクトに属するポリモーフィックオブジェクト:object_typeが正しくありません

検討:

編集:私はそこでしばらく混乱しました。これは実際にはSTIではなくEmployee、独自のテーブルがあるため、単なる継承です。

ありがとう!

0 投票する
6 に答える
3505 参照

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 を呼び出すと、クラス定義が返されるためです。

簡単なドキュメントを読みましたが、何か足りないのでしょうか?