Ruby on rails 为什么在尝试排序时不返回方法错误?

Ruby on rails 为什么在尝试排序时不返回方法错误?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在使用名为的gem作为跟随者 在这里,我试图获取跟踪当前用户的所有用户 然后我想让它们按名为last\u active\u的列排序 所以我试着这样编码,但它返回了错误。 我该怎么修理 控制器 @followed_users = current_user.followers.order('users.last_active_at DESC').limit(10) 错误消息 NoMethodError (undefined method `order' for #<Array:0x

我正在使用名为
的gem作为跟随者

在这里,我试图获取跟踪当前用户的所有用户

然后我想让它们按名为
last\u active\u的列排序

所以我试着这样编码,但它返回了错误。 我该怎么修理

控制器

@followed_users = current_user.followers.order('users.last_active_at DESC').limit(10)   
错误消息

NoMethodError (undefined method `order' for #<Array:0x0000000ab3cf18>):
NoMethodError(未定义的#的'order'方法):

追随者
方法返回
数组
在ruby中,
Array
没有任何
order
方法

请看 发件人:--


“book.followers#返回该书的所有追随者的数组,不同对象类型的集合(例如,type User或type book)”

followers
method return
array
在ruby中,
Array
没有任何
order
方法

请看 发件人:--


“book.followers#返回该书的所有追随者的数组,不同对象类型的集合(例如,type User或type book)”

数组没有任何
顺序
方法。你可以这样做

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

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

阵列没有任何
顺序
方法。你可以这样做

@followed_users = current_user.followers.sort_by{ |n| n.last_active_at }
然后,当在视图中显示时,您可以将其限制为您想要的数量,或者从控制器(建议的方式)执行此操作。

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

因此,这应该是可行的:

@followed_users = current_user.followers(:order => 'users.last_active_at DESC', :limit => 10)
根据followers,获取ActiveRecord选项的可选哈希参数(:limit、:order等)

因此,这应该是可行的:

@followed_users = current_user.followers(:order => 'users.last_active_at DESC', :limit => 10)
所以你可以试试这个

ASC:
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}。取(10)

,你可以试试这个

ASC:
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)

谢谢你提供的信息。有没有解决这个问题的潜在方法?谢谢,我有!你的评论有效,但还有一件事!!您能将其更改为DESC order而不是ASC吗?ASC:current_user.followers.sort!{a,b | a b}.take(10)DESC:current_user.followers.sort!{| a,b | ba}.take(10)ASC:current|u user.followers.sort!{a,b | a.last_activate_at b.last_activate_at}.take(10)DESC:current_user.followers.sort!{| a,b | b.last_activate_at a.last_activate_at}.take(10)用户表中是否有该列如果没有,请执行ASC:current_user.followers.sort!{a,b | a.created_at b.created_at}.take(10)DESC:current_user.followers.sort!谢谢你提供的信息。有没有解决这个问题的潜在方法?谢谢,我有!你的评论有效,但还有一件事!!您能将其更改为DESC order而不是ASC吗?ASC:current_user.followers.sort!{a,b | a b}.take(10)DESC:current_user.followers.sort!{| a,b | ba}.take(10)ASC:current|u user.followers.sort!{a,b | a.last_activate_at b.last_activate_at}.take(10)DESC:current_user.followers.sort!{| a,b | b.last_activate_at a.last_activate_at}.take(10)用户表中是否有该列如果没有,请执行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)@followed_users=当前用户。followers.sort_by{n | n.last_active_at}。take(10)thanks!但这是ASC。你能把它改成DESC吗?如果有1000个追随者(例如,在真实场景中可能会有更多)会怎么样。它将不必要地从数据库中获取所有数据。无论如何,它都将运行查询,我将使用@RajaD添加到解决方案中的内容。除此之外,如果您非常关心数据库获取结果和重载,那么我会说,根据可能的参数或条件,然后根据视图中的显示,在控制器中定义一个自定义方法是一个好主意。@followed_users=current_user.followers.sort_by{n | n.last_active_at}。接受(10)感谢!但这是ASC。你能把它改成DESC吗?如果有1000个追随者(例如,在真实场景中可能会有更多)会怎么样。它将不必要地从数据库中获取所有数据。无论如何,它都将运行查询,我将使用@RajaD添加到解决方案中的内容。除此之外,如果您非常关心数据库获取结果和重载,那么我想说,根据可能的参数或条件,然后根据视图中的显示,在控制器中定义自定义方法是一个好主意。它返回了此错误
ActiveRecord::WangeLoadPolymorphicerRor(无法急切地加载多态关联:follower):
它返回了此错误
ActiveRecord::急切地加载多态性错误(无法急切地加载多态关联:follower):
请用模型代码更新问题。@ManojMonga或者你能告诉我如何获取DESC订购的记录吗?使用此代码
@followed_users=current_user.followers.sort_by{{n | n.last_active_at}.take(10)
请参见,
当前用户。followers
是在数组中获取关注者的方法。根据我对答案的评论,它给出了错误。无论如何,如果这对您有效,您仍然无法调整它以仅获取10条记录,因为gem正在处理此查询。请使用模型代码更新问题。@ManojMonga或者您可以吗请告诉我如何获取DESC订购的记录?使用此代码
@followed\u users=current\u user.followers.sort\u by{n | n.last\u active\u at}。获取(10)
请参阅,
current\u user.followers
是获取followers的方法