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 returnarray
在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的方法