問題タブ [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 投票する
1 に答える
882 参照

ruby-on-rails - STI対MTI対個別のテーブルを考案する

認証にdeviseを使用するrails3.1プロジェクトがあります。

私にはいくつかのユーザータイプがあり、それぞれがデータベース内で非常に異なるフィールドを使用しています。モデルごとに異なるモデルがありましたが、メッセージングなどのモデル間には十分な重複機能があったため、単一のモデルを使用するのが理にかなっています。これは、異なるタイプのユーザー間のメッセージングを処理するときに特に問題でした。

それらをすべて個別のテーブルとして残すか、単一のテーブルに移動する必要がありますか?複数のテーブルの継承は、ユーザーを常に検索するという事実を考えると、実際にはあまり意味がありません。参加するのは単に費用がかかりすぎるでしょう。

テーブル内の各ユーザータイプの未使用の列がすべてあるのは本当に汚い感じです。

考え?

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

ruby-on-rails - モデルとコントローラのアーキテクチャ

ユーザーが投稿を追加し、それらすべてを 1 つの集約されたストリームで表示できるシンプルなサイトを開発しようとしています。

問題は、「メッセージ」投稿と「リンク」投稿の 2 つの「タイプ」の投稿があることです。

すべての投稿にはメッセージが必要であり、投稿にはリンクを含めることができます。

投稿にリンクが含まれている場合は一意である必要があるため、(あなたまたは他のユーザーによって) 既に送信されたリンク付きの投稿を追加することはできません。

したがって、ユーザーが提供されたリンク URL を使用して投稿を追加する場合、次のようなリンクの検証が必要です。

  • これはリンクですか?
  • このリンクは新しいものですか (まだデータベースにありません)?
  • これは有効なリンクですか (ドメインが存在し、サーバーの応答が適切であるように (400,301,...)

今、私は次のようなすべての投稿 (リンクありとなし) に対して 1 つのモデルで立ち往生しています。

私が見ている問題は、NULLになる可能性があるため、モデルの検証をリンクに適用できないことです(一意性または形式をチェックできません)。したがって、posts_controllerのすべての検証を次のように適用します。

これを正しい方法にする方法は?これに STI を使用するという提案がありましたが、それを正しい方法で行う方法と検証を適用する方法がよくわかりません。STI と検証の使用に関する適切なリソースを知っている場合は、リンクを教えてください。

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

ruby-on-rails - STI を使用した Rails アプリ -- これらのレコードを取得する最も簡単な方法は?

私は Rails の使い方を学んでおり、ビールのレシピを追跡するためのサンプル アプリに取り組んでいます。

レシピ名と効率を保持する Recipe というモデルがあります。

私は、STI を使用している Ingredient というモデルを持っています。これは、麦芽、ホップ、酵母にサブクラス化されています。

最後に、レシピと材料をリンクするために、rec_items という名前の結合テーブルを使用しています。このテーブルには、レシピ ID、材料 ID、およびレシピと材料の組み合わせに固有の情報 (量や沸騰時間など) が含まれています。

すべてがうまく機能しているようです。Malt.all を使用してすべてのモルトを見つけることができ、Ingredient.all を使用してすべての材料を見つけることができます。@recipe.ingredients などを使用して、レシピの材料を見つけることができます...

ただし、私は現在レシピの表示ビューに取り組んでおり、以下を達成するための最良の方法について混乱しています:

レシピ名と関連情報を表示してから、材料をリストしますが、材料の種類ごとに分けます。したがって、効率 85% の Black IPA があり、5 つのモルトと 3 つのホップの品種がある場合、出力は次のようになります。

これで、@recipe.rec_items をプルして反復処理し、各 rec_item.ingredient の type == "Malt" をテストしてから、ホップについて同じことを行うことができますが、Rails らしくも効率的でもないようです。では、これを行う最善の方法は何ですか?@recipe.ingredients.all を使用してすべての材料を取得できますが、@recipe.malts.all または @recipe.hops.all を使用してそれらの種類だけを取得することはできません。

使用すべき別の構文はありますか? @recipe.ingredient.find_by_type("Malt") を使用する必要がありますか? コントローラーでこれを行い、コレクションをビューに渡しますか、それともビューで直接行いますか? ホップ モデルとモルト モデルでも has_many 関係を指定する必要がありますか?

条件付きステートメントまたは find_by_type を使用して希望どおりに動作させることができますが、DB オーバーヘッドをできるだけ少なくして、これを「Rails 方式」で行うことに重点を置いています。

助けてくれてありがとう!

現在の最低限のコード:

レシピ.r​​b

成分.rb

Malt.rb

ホップ.rb

RecItem.rb

レシピ_コントローラー.rb

更新して追加

結合テーブルの属性にアクセスできなくなったため、新しい質問を投稿しました。

Rails - group_by と has_many :through を使用して、結合テーブルの属性にアクセスしようとしています

誰かがそれを手伝ってくれるなら、私はそれを感謝します!!

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

ruby-on-rails-3.1 - アクティブな管理者およびSTIモデルエラー:テーブル「カテゴリ」が見つかりませんでした

アップデート#1:解決しました!どういうわけか、Powはプロセスを再起動しなかったため、更新後、古い構成ファイルをロードしていました。そして、それは間違ったロケールファイルをロードしていました。

最近インストールしたgemを(Gemfileからのみ)削除し、Powを再起動しました。次に、1つずつgemをGemfileに追加し直しました。Railsのローカリゼーションと同様にActiveAdminも正常に機能し始めました。

元の質問:

分類法をサポートするようにActiveAdminを設定しようとしています。私の設定は次のとおりです。

そこで、ActiveAdminに以下を追加しました。

そして、それはFolioingエラーを返します:

私の移行は間違いなく実行されました。そして、私はtaxonomiesテーブルにいくつかの有効なSTIレコードを持っています。では、何が間違っている可能性がありますか?

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

ruby-on-rails - 登録時にBaseクラスとしてログインする方法を工夫してSTI

すでに同様の投稿を見たことがありますが、必要な回答を得ることができませんでした。

User モデルがあり、STI を使用して、User のタイプである Student モデルを使用しています。

新しい生徒を作成すると、Devise はその生徒に Student_session でログインします。問題は、アプリの残りの部分が user_session を使用していることです。SO、student_session を使用して新しい user_session を作成する必要がありますか? 学生をログアウトしますか?

または、学生の作成を許可するようにDeviseを取得する方法はありますが、ユーザーベースモデルとしてログインしますか?

ありがとう、アンソニー

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

polymorphism - mongoid でポリモーフィズムを使用する場合、単一テーブル継承 (STI) を使用できますか?

ActiveRecord で STI とポリモーフィズムを使用する場合、次のことを保証するために必要です。

正常に動作します:

Mongoid で STI とポリモーフィズムをうまく使っている人はいますか?

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

activerecord - ActiveRecord STI:親クラスのデフォルトスコープから抜け出すにはどうすればよいですか?

Rails 3.1 RC6では、

以下は期待どおりに機能しません。

結果のSQLステートメントは次のようになります。

親クラスのデフォルトスコープを完全にオーバーライドするにはどうすればよいですか?

私は次のことも試しましたが、どれもうまくいきませんでした:

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

ruby-on-rails - metasearch has_many は、すべて/なしが一致する必要があります

私はメタサーチを作成しようとしている、または代わりに type == "Something" と等しい has_many-association を持たないすべてのオブジェクトを提供するスコープを作成しようとしています。

例:

請求書のある注文の検索は、カスタム スコープによって簡単に実行できます。

またはメタサーチ:

逆に、請求書のない注文を見つけるにはどうすればよいですか? (OrderAcknowledgements は常に許可する必要があります)

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

ruby-on-rails - Rails の質問: STI での belongs_to -- 正しく行うにはどうすればよいですか?

私はSTIとbelongs_to / has_manyの関係で遊んでいて、少し混乱しています。

次のようなモデル構成に基づいて、いくつか質問があります。

  1. 何に所属する必要がBabyありますか?
  2. 移行に関して、babiesテーブルの外部キーに何を指定/追加する必要がありますか?
  3. これについて調べるのに苦労しましたが、これを説明する決定的な情報源はありますか? API ドキュメントは頭に当たらないか、見逃したようです (これは完全に可能です)。

私の最初の考えは、次のようなメソッドと一緒に追加parental_idすることです:babiesBaby#owner

  • 自分にヒットします。
  • 親のタイプを決定します
  • 親の正しいタイプを返します (母親、父親の可能性があります)

ありがとうございました!

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

ruby-on-rails - Rails2.3STIはすべての子クラスを返します

標準のSTIを使用しており、オプションがすべて親クラスの子タイプであるフォームに入力選択を作成したいと思います。したがって、Parent.select_optionsが['Child1'、'Child2'、'Child3']を返すようにします。

view.html.haml

アップデート

@nashと@jdesenoのおかげで、@jdesenoメソッドを使用して次の初期化子を追加する必要があります。