为什么在尝试订购时没有返回方法错误?

时间:2013-06-12 11:34:02

标签: ruby-on-rails ruby-on-rails-3

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

的宝石

在这里,我正在尝试获取所有关注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 个答案:

答案 0 :(得分:2)

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

请看 来自github: -

“book.followers#返回该书的所有粉丝的数组,不同对象类型的集合(例如,键入User或type Book)”

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

所以你可以试试这个

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

答案 3 :(得分:0)

根据readme@github关注者获取ActiveRecord选项的可选哈希参数(:limit,:order等等)

所以这应该有效:

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