0

我正在使用 Amistad gem 创建一个朋友系统。它包括一个友谊模型和控制器,我假设它们以各种方式与我的用户模型相关联:通过方式等,到目前为止所有功能似乎都有效。

在视图中循环 current_user.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 回答