0

categoriesをリンクする必要があります。データベーステーブル(category_a_idとcategory_b_id)の2つの列を見るためにhas_manyを関連付けてセットアップするには

リンクされている2つのカテゴリのうちidを保持するために、2つのカラムcategory_a_idcategory_b_idを持つcategory_linksテーブルがあります。

Category.find(1).category_linksに電話したい場合は、category_a_idcategory_b_idの両方の列からID 1のすべてのレコードを取得します。また、カテゴリが破棄された場合、category_a_idまたはcategory_b_idの列に関連付けられている場合は、category_linkデータベース内の関連するレコードがすべて削除されます。

現在、私は

belongs_to :category_b, :class_name => :Category 
belongs_to :category_a, :class_name => :Category 

とカテゴリDBに

has_many(:category_links, :foreign_key => :category_a_id, :dependent => :destroy) 
has_many(:category_links, :foreign_key => :category_b_id, :dependent => :destroy) 

を持っている。しかし、これはだけでなく、両方から一致するidでcategory_b_id列からレコードをassosiates。category_linksモデルでしたがって、Category.find(1).category_linksを呼び出すと、category_a_idcategory_b_idの両方に一致するレコードは得られません。カテゴリを破壊するのも同じです。

カテゴリを破棄して関連するカテゴリの両方の列を調べて、Category.find(1).category_linksの呼び出しで一致するレコードが検索されるようにするにはどうすればよいですか?

答えて

2

ありhas_manyを通じてそれを実現する簡単な方法はませんが、あなたは空想である必要はありません場合は、単にCategoryにカスタムメソッドを作成します。それが可能か検討しなかった場合

def category_links 
    @category_links ||= CategoryLinks.where('category_a_id = ? or category_b_id = ?', id, id) 
end 
+0

いやが確認されませんでした私はそれで何かを見つけることができませんでした。誰かがそれを確認するのを聞いてうれしい。私はこれを開いたままにして、他の回答が何か入って来るのを見ます。何も来なければ、私はあなたの応答に行くでしょう。 – Rob

関連する問題