0

Amistad gem を使用してフレンド システムを作成しています。これには、さまざまな方法でユーザーモデルに関連付けられていると思われるフレンドシップモデルとコントローラーが含まれており、これまでのところすべての機能が機能しているようです。

ビューで current_user.friends をループすると、ユーザーの friendsが得られ、すべての通常のユーザー フィールドにアクセスできます。例: それぞれに .email、.name など。

今、私は自分のユーザーモデルのもので通常行っているように、ページ分割してsearch_forをcurrent_user.friendsに適用したいと思っていますが、うまくいきません。

したがって、これは機能します:

User.order('created_at desc').search_for(params[:search]).paginate(per_page: 10, page: params[:page])

でもこれは

current_user.friends.search_for(params[:search]).paginate(per_page: 10, page: params[:page])

与える

NoMethodError (undefined method `search_for' for #<Array:0x007faac0b0db10>):

またはこれ、私がsearch_forをノックアウトしたとき

NoMethodError (undefined method `paginate' for #<Array:0x007faac015c7d8>):

ここに簡単な答えがあることを願っています!

編集User.where(current_user.friends) などを実行して、これを回避できますか?

4

1 に答える 1

1

User.order... は ActiveRelation オブジェクトを返し、current_user.friends は配列を返します。これを試して。

User.joins('INNER JOIN friendships ON friendships.friend_id = users.id').where(:friendships => {:user_id => current_user.id, :pending => false, :blocker_id => nil})
于 2012-09-19T16:12:04.010 に答える