1

我正在使用名为acts_as_followerhttps://github.com/tcocca/acts_as_follower)的 gem

在这里,我试图获取所有关注 current_user 的用户。

然后我希望它们按名为的列排序last_active_at

所以我尝试像这样编写代码,但它返回了错误。我该如何解决?

控制器

@followed_users = current_user.followers.order('users.last_active_at DESC').limit(10)   

错误信息

NoMethodError (undefined method `order' for #<Array:0x0000000ab3cf18>):
4

4 回答 4

2

followers方法返回Array 并且在 ruby​​ 中Array没有任何方法order

请从github看:--

“book.followers #返回该书所有关注者的数组,不同对象类型的集合(例如,用户类型或书籍类型)”

于 2013-06-12T11:37:55.027 回答
1

数组没有任何order方法。你可以做这样的事情

@followed_users = current_user.followers.sort_by{ |n| n.last_active_at }

然后在视图中显示时,您可以将其限制为您想要的数量或从控制器执行(建议的方式)。

于 2013-06-12T11:43:40.380 回答
1

所以你可以试试这个

升序:
current_user.followers.sort!{ |a,b| a.created_at <=> b.created_at }.take(10)
降序:
current_user.followers.sort!{ |a,b| b.created_at <=> a.created_at }.take(10)

于 2013-06-14T04:20:41.630 回答
0

根据readme@github的关注者采用 ActiveRecord 选项的可选散列参数(:limit、:order 等...)

所以这应该工作:

@followed_users = current_user.followers(:order => 'users.last_active_at DESC', :limit => 10)
于 2013-06-12T11:47:54.343 回答