1

タイトルの通り、意味不明です。シナリオを想像してください:

次のモデルがあります: GameGameType、およびChampion。特定のゲームGameType(MOBA など)のみがモデルhas_manyと関係を持つようにしたいと考えています。Champion他のもの (FPS など) はそうではありません。

私の最初の傾向は、GameTypeMoba抽象クラスを作成することでした。そこでは、それを継承するすべてのクラスがそのプロパティの一部 (チャンピオンを持つなど) を持つことができます。ただし、テーブルに関連付けられていないクラスはテーブルの関係を持つことができないため、これは意味がありません。さらに、どうにかして一緒にハックできるとしたら、それはくだらない、WET (DRY の反対) アプローチのように思えます。

面倒なアプリ ロジックを含まないシンプルなソリューションを誰かが持っていることを願っています。この時点で「遅刻、寝なさい」でも構いませんが。

4

2 に答える 2

0

Rails ガイドの「has_many」関連リファレンス (http://guides.rubyonrails.org/association_basics.html#has_many-association-reference) を確認すると、関連宣言で条件オプションを使用できる場合があります。ドキュメントで提供されている例:

class Customer < ActiveRecord::Base
  has_many :confirmed_orders, :class_name => "Order",
    :conditions => "confirmed = 1"
end

あなたの状況では、「GameType」の :class_name を :conditions => "MOBA = " で使用したいと思います。

于 2012-08-11T08:06:25.923 に答える
0

Mischa の言うとおりです。この場合、これ以上に優れた/よりクリーンな方法はないようです。また、レコードのサブセットに不要なリレーションを設定することは、実際には大したことではありません。

于 2012-08-27T07:47:53.500 に答える