問題タブ [polymorphic-associations]

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 に答える
1334 参照

ruby-on-rails - Rails-多形的にネストされたリソースの親リソースを簡潔に見つける

私がこのような多形構造を持っているとしましょう。

それはかなり醜いです。それが属する可能性のある新しいものを追加するときはいつでも、そのbefore_filterに非DRYlyで追加する必要があります。

それも悪化します。Foosは、コメントやタグのように、どこにでも表示される可能性のある本当に多形的なものであると仮定します。そして、次のルートがあるとします。

...ここで、最初にbar_idとbaz_idのどちらをチェックするかを心配する必要があります。

より複雑なリソースの場合、これでは親のIDを確実に取得するのに十分ではない可能性があります。

理想的なのは、次のようなことができるかどうかです。

結局のところ、私たちのルートは、URL内のパラメーターの順序によって、すでに親をエンコードしています。なぜその情報を破棄するのですか?

だから:これはどのように行うことができますか?

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

ruby-on-rails - Railsのポリモーフィックな関連付けをRESTfulに破棄しますか?

このRESTfulを維持しながら、関連付け自体を破棄し、関連付けられているオブジェクトをそのままにしておくにはどうすればよいですか?

具体的には、次のモデルがあります。

つまり、イベントは:surveyableModelSurvey belongs_to Event)です。私の質問は、を作成する必要なしに、をそのままにして、どうModelSurveysControllerすれば破壊することができるかということです。ModelSurveyEventSurvey

何か map.resources :events, :has_many => :model_surveys?この状況で何をすべきかよくわかりません。ルートで何が起こる必要があり、コントローラーで何が起こる必要がありますか?URLが次のようになることを願っています:

/events/:title/model_surveys/:id

助けてくれてありがとう、ランス

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

ruby-on-rails - 多形関連の検証フォーム

class User <ActiveRecord :: Base has_one:core、:as =>:resource validates_presence_of:name end

新しいユーザーを挿入するには、次のようなフォームを使用します。

メールアドレスと名前を挿入せずにこのフォームを送信すると、railsはユーザーのエラーのみを表示します。同じリストにコアエラーも入れたいのですが、どうすればよいですか?

ありがとう

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

ruby-on-rails - レールにおける継承とポリモーフィック・アソシエーション

Profile (belongs_to polymorphic)に属するUserモデルがあります。1 つのモデルには 2 つのサブクラスがありますが、 Userのprofile_typeは常に親モデルに対応します。

それで:

サブクラスで関連付けを記述しても、profile_typeはSomeProfのままです。

なぜこれが起こるのですか?profile_type が親クラスではなくサブクラスに一致する方法はありますか?

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

ruby-on-rails - コントローラーによるポリモーフィック has_many: アンチパターン?

はいと言いたくなる。

has_many :through と polymorphs を使用した不自然な例:

とりあえず、ジムがクラブなのか、それとも他の設計上の欠陥なのかという問題はさておき。

User を Club に追加するには、次のように RESTful にして person_id と club_id を MemberController に POST するのが魅力的です。

このシナリオでは、次のことを行うことにしました。

親リソースがクラブかジムかを MemberController に判断させ、それに応じて動作させる必要があります。非 DRY ソリューションの 1 つ:

何度もやると驚くほどひどい。

また、クラブに入会することとジムに入会することはほぼ同じであるという概念に基づいています。または、少なくとも、Gym#add_member と Club#add_member は多かれ少なかれ並行して動作します。ただし、ジムとクラブでは、メンバーシップの申し込みを拒否する理由が異なる可能性があると想定する必要があります。MembersController は、2 つ以上のエラー状態のフラッシュ メッセージとリダイレクトを処理する必要があります。

世の中には解決策があります。James Golick の素晴らしい ResourceController には、parent_type、parent_object などを処理する方法があります。Revolution On Rails には、ApplicationController にいくつかのメソッドを追加することで、複数のポリモーフィック コントローラーを DRY するための優れたソリューションがあります。もちろん、ActionController には、Blog#posts や Article#posts などの単純なケース用の #polymorhpic_url があります。

これはすべて、MembersControllerにすべての圧力をかける価値があるのでしょうか? Rails ではポリモーフィズムはかなりうまく処理されますが、条件 (if/unless/case) を使用すると、どの型を扱っているかがわからないことが明確に示されているように感じます。メタプログラミングは役に立ちますが、型が同様の動作をする場合に限られます。どちらもデザインレビューの必要性を指摘しているようです。

これについてあなたの考えを聞きたいです。このシナリオでは DRY である方が良いですか、それとも自分の親のタイプを正確に知る方が良いですか? ここで私は神経症ですか?

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

ruby-on-rails - ペーパークリップのポリモーフィックな関連付けと保存

photo.rbモデルを多形に変更し、画像を保存する必要のある他のあらゆる種類のモデルで使用できるようにしました。親モデルから新しい添付ファイルを適切に保存する方法がわからない場合を除いて、正常に機能します。何か案は?どういうわけかこれに別の方法でアプローチする必要がありますか?として、それはまた、imageable_typeを取得していません...これを追加する必要があります。

獣のように見え、さらに別のテーブルを使用する多形のペーパークリッププラグインを見ましたか?だから私はより良い回避策を望んでいます。

私が得ている:

muffin.rb

photo.rb

0 投票する
5 に答える
6828 参照

ruby-on-rails - Railsのポリモーフィックタイプですべてを検索しますか?

Railsで特定のポリモーフィックタイプのすべてのポリモーフィックモデルを見つける方法はありますか?したがって、グループ、イベント、プロジェクトがすべて次のような宣言である場合:

has_many :assignments, :as => :assignable

私は次のようなことをすることができますか?

Assignable.all

...また

BuiltInRailsPolymorphicHelper.all("assignable")

それはいいね。

編集:

... (クラスの配列)をAssignable.all返すようなもの[Event, Group, Product]

0 投票する
4 に答える
4139 参照

sql - SQL 条件付き / ケース結合 / ポリモーフィック アソシエーション?

Ruby on Rails のポリモーフィックな関係に似たものを実装しようとしています。次の 3 つのテーブルがあります。

イベント ユーザー 組織

イベントは、ユーザーまたは組織のいずれかが所有者になることができるため、私の Events テーブルには、owner_type と owner_id という列が含まれています。

内部結合と where 句を使用して、ユーザーまたは組織に属するすべてのイベントを簡単にリストできますが、結合テーブルを owner_type 列の値に基づいて条件付きにし、すべてのイベントを一緒にリストできるようにする方法はありますか? owner_type に関係なく?

それが理にかなっていることを願っています。

アドバイスをいただければ幸いです。

ありがとう。

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

ruby-on-rails - Rails の写真、ユーザー、コメント

それは私を夢中にさせています。私は3つのモデルを持っています。ユーザー、写真、コメント。

これが私がやりたいことです。

ユーザーは多くの写真とコメントを持っています

写真はユーザーのもので、多くのコメントがあります

コメントはユーザーと写真に属します

したがって、私のモデルには次の関連付けがあります。

ユーザー

写真

コメント

写真を表示し、この写真のすべてのコメントを読み込み、各コメントをユーザー情報とともに表示したいと思います。

だから私が持っている写真コントローラショーアクションで

そして写真/ショービューで

コメントを表示します。コメントテキストは問題ありませんが、パーシャル内では次のことを試みます。

「nil:NilClass の未定義メソッド `fname'」というエラーがスローされます。

奇妙なことに、私はユーザー authlogic であるため、コメントを投稿するにはログインする必要があります。ただし、ログインしていなくてもコメントを見ることができます。ログオフしているときは、find が機能します。ログインすると、エラーがスローされます。

それが私を狂わせているので、どんな助けも大歓迎です。

ところで、私のルートでは

ありがとう

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

ruby-on-rails - ポリモーフィックな関係で列をキャッシュする

配置の中核として多形ツリーテーブルを使用するコンテンツ管理システムアプリケーションがあります。ツリーが非常に大きくなると、かなりの数の異なるモジュール(約25)があるため、:include =>:instanceを実行するだけではマスタードがカットされないという問題が発生しました。インスタンスは、ポリモーフィックな関係の名前です。

面白い部分は、ほとんどの場合、これらのアイテムの大規模なリストが必要な場合、本当に必要なのは関連するテーブルからの名前だけであり(たとえば、インデックスバーの目的で)、残りはすべて中央のテーブルにあります。そのため、中央テーブルの名前に何らかの列キャッシュを実装する必要があると思いました。(railsがすでに行っているカウンターキャッシュのように)。

これを管理するプラグインがすでに存在するかどうか疑問に思っていましたか?

そうでない場合は、中央テーブルに「name」列を追加します。すべてのポリモーフィックモデルはスーパークラスを継承するため、アイテムが作成または更新されるたびに名前を中央テーブルにプッシュするコールバックを追加するだけです。それなら、そもそも大規模な移行を行ってデータを入力しますか?

そのデザインに何か欠陥はありますか?

より柔軟になると思いますが、列は、必要に応じて後で他のものを格納できる、ある種のシリアル化されたキャッシュである可能性がありますか?ああ!:D