0

モデル: カテゴリ

class Category < ActiveRecord::Base
   has_and_belongs_to_many :postings
   has_and_belongs_to_many :volunteers
end

モデル:ポスティング

class Posting < ActiveRecord::Base
   has_and_belongs_to_many :categories
   has_many :volunteers, :through=>:signed_postings
end

モデル:ボランティア

class Volunteer < ActiveRecord::Base
   has_and_belongs_to_many :categories
   has_many :postings, :through=>:signed_postings
end

ここに私が解決しようとしている問題があります。

ボランティアが興味を持っているカテゴリのすべての投稿を見つけたいと思います。ボランティアは複数のカテゴリに興味を持っている可能性があり、投稿には複数のカテゴリが割り当てられている可能性があります。

追加情報

私は別のモデル SignedPosting も持っています:

class SignedPosting < ActiveRecord::Base

  belongs_to :volunteer
  belongs_to :posting

end

ボランティア モデルでjdoeによって提案されているように、関連付けhas_many posts, :through=> :categories, uniq=> :trueを追加した後、ボランティアから投稿モデルへの 2 つのhas_many 関連付けがありますが、異なる:throughがあります。

レールは同じモデルへの2つの has_many 関連付けに満足していないため、この問題を解決する方法がわかりません。

4

1 に答える 1

1

あなたは付け加えられます:

# in Volunteer class
has_many postings, through: :categories, uniq: :true

次に、次のように呼び出します。

Volunteer.find(1).postings

対立を解決する

衝突時に(すでに関連付けがある場合postings)、次の手順を実行します。

# name 'postings_via_cats' isn't obligation. Name it as you want.
has_many postings_via_cats, through: :categories, source: :postings, uniq: :true 
                 ---------                        -----------------     
于 2012-06-11T16:10:28.790 に答える