2

Activerecord :: Relationshipオブジェクトの配列を反復処理するにはどうすればよいですか?たとえば、CommentクラスとクラスがありUser、3人の特定のユーザーからすべてのコメントコンテンツを取得したいとします(コメントがユーザーに属し、user_idが外部キーであると仮定します)。

>> @males = Comment.where('user_id IN (?)', ["123","456","789"])
=> [...] #Array of comment Activerecord::Relation objects

次に、配列内の各コメントのすべての属性コンテンツを繰り返してcomments_from_males収集します。content

明確にするために、以下は機能しますが、最初に戻った男性に対してのみですが、すべての男性に対してすべてのコメントが必要です。

>> @males.first.comments.map(&:content)
=> ["first comment", "second comment"]
4

3 に答える 3

7
comments = @males.map {|user| user.comments.map(&:content)}.flatten
于 2012-09-17T16:22:20.043 に答える
1

使用できます

comments_from_males = @males.collect{|e| e.content if e.gender == "male"}.flatten

それはあなたに男性からのすべてのコメントのリストを与えるでしょう。私のdbの仮定が一致することを確認してください。

于 2012-09-17T16:21:53.253 に答える
1
Comment.where('user_id IN (?)', ["123","456","789"]).pluck(:content)

メソッドプルック

于 2012-09-17T16:31:57.027 に答える