2011-06-30 9 views
0

モデルのいずれかでbelongs_to/has_many関係の両方の半分を設定できる方法はありますか?なぜ私はよく分からないRailsでは、あるモデルのhas_many関係を別のモデルから設定できますか?

+2

これで何を達成しようとしていますか?それはむしろ奇妙な要求です。 – Luke

+0

これを別々に行うことの問題は何ですか? –

+0

これは、私が書いているところでは、機能をほとんど持たない新しいモデルを追加することで、機能を拡張することができるだけ簡単になるようにしたところから来ています。私はそれを大部分のスーパークラスにプッシュし、これをたくさん達成しました(belongs_to部分を含む)が、これらの追加されたモデルはすべて、他の一つのhas_manyを必要とします。 –

答えて

2

...

class A < ActiveRecord::Base 
end 

class B < ActiveRecord::Base 
    belongs_to :a 
    A.has_many :b 
end 

明らかにこれが動作しない(または私はそれを使用しているだろう)が、私はそれは私が何を意味するかを説明願っています:だから私のような何かをしたいですあなたには大きな理由があると仮定します。

has_manyはActiveRecord :: Baseで定義されたクラスメソッドであるため、A.has_many :bを呼び出すとうまくいきます。

しかし、開発中に注文を読み込むことで問題が発生する場合があります。 a = A.newという例をロードして呼び出すと、クラスBはロードされていないので、AにはBがたくさんあるとは考えられません。aクラスリスト全体が開始時にロードされるプロダクションでは、これは問題にはなりません。開発では、requireステートメントを使用して回避することができますが、2つのファイルを結びつけることは非常に強力です。

私はそれを試したことはありませんが、理論的には、上記の設定が機能しなくなっていると思う唯一のことです。

+0

Aha。それは理にかなっている。 Class.inheritedを使用しようとしたときに同様の問題にぶつかりました。それは完璧に働いていましたが、他のモデルがすでに見られていれば_only_です。ありがとう:) –

関連する問題