2010-12-28 11 views
0

ここに私のものがあります。Rails HABTM固有のレコードを読み取る

client has_many branches 

branch has_many projects 

project has_and_belongs_to_many announcements 

クライアントのアナウンスを簡単に見つける方法はありますか?

私は告知のユニークなコレクションが必要です。

答えて

0

が、アナウンスメントは1つのクライアントにのみ属し、次に使用します。

Client: 

has_many :announcements 

Announcement: 

belongs_to :client 

これはActiveRecord内に保持されます。いくつかの簡単なメソッド呼び出しで、特定のクライアントのアナウンスを見つけることができます。例については、「協会がモデルに参加」までスクロール:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

0

クライアントテーブルとアナウンスメントモデルの多対多の関係を処理するための結合テーブルを作成しないでください。次のようなものがあります。

Client: 

has_many :announcements, :through => :client_announcements 

Announcement: 

has_many :clients, :through => :client_announcements 

ClientAnnouncements: 

belongs_to :client 
belongs_to :project 

次に、特定のクライアントIDにアタッチされたアナウンスを検索するオブジェクトを設定することができます。

PS:回答私はネイティブのRails DEVないんだけど、網羅ではないかもしれない - 私は上で触れたものの例については、APIドキュメントを確認します。クライアントは、複数のアナウンスを持つことができる場合はhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

+0

私はあなたの答えに感謝しますが、私は理解していません:)発表は複数のクライアントにまたがることはできません。私はすでにこのことが働いていますが、それには多くのルビコードと複数のdbヒットが含まれています。私はActiveRecordで何かを探していた。しかし、私は、新しい関係を作成することなく、これを行う直接的な方法はないと思います。 – AMIT

0

あなたは

または単にuniqの呼び出しHABTM

has_and_belongs_to_many :uniq_announcements, :source=>:announcements, :uniq=>true 
にuniqの記号を使用して新しい関係を作成することができます!

project.announcements.uniq 
関連する問題