2013-06-12 2 views
1

Я использую камень под названием acts_as_follower (https://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>): 
+0

Пожалуйста, обновите вопрос с моделью кода. –

+0

@ManojMonga Или не могли бы вы просто рассказать мне, как получить запись, заказанную DESC? с этим кодом '@followed_users = current_user.followers.sort_by {| n | n.last_active_at} .take (10) ' – MKK

+1

См.« current_user.followers »- это то, что выбирает последователей здесь в массиве. И, согласно комментарию моего ответа, он дает ошибку. В любом случае, если это работает для вас, все равно вы не можете настроить его, чтобы просто извлечь 10 записей, поскольку этот запрос обрабатывается gem. –

ответ

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)

2

followers метод возвращения Array и Array не имеют order метод в рубин

Пожалуйста, смотрите От github: -

«book.followers # Возвращает массив всех последователей для этой книги, сборник различных типов объектов (например. Тип пользователя или тип книги)»

+0

Спасибо за информацию. Есть ли какой-либо потенциальный способ решить эту проблему? – MKK

+0

Пожалуйста, просмотрите мои комментарии –

+0

Спасибо, что я сделал! ваш комментарий работал, но еще одна вещь !! Можете ли вы заставить его изменить порядок DESC вместо ASC? – MKK

1

Массивы не имеют каких-либо order метод. Вы могли бы сделать что-то вроде этого

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

Тогда при отображении в окне вы можете ограничить его, сколько бы Вы не хотите или сделать это . от контроллера (предложенный способ)

+0

Спасибо :) а как насчет предела (10) ??? – MKK

+2

@followed_users = current_user.followers.sort_by {| n | n.last_active_at} .take (10) спасибо –

+0

Спасибо! но это ASC. Можете ли вы изменить его на DESC ?? – MKK

0

по [email protected] последователей принимает необязательный параметр хеш опций ActiveRecord (: предел,: заказ, и т.д ...)

Так это должно работать:

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

Он вернул эту ошибку 'ActiveRecord :: EagerLoadPolymorphicError (не могу с нетерпением загрузить полиморфную ассоциацию: follower):' – MKK

+0

Работает ли она при выполнении только 'current_user.followers'? –

+0

нет он не работает – MKK

Смежные вопросы