Rails, как использовать, кроме как со списком идентификаторов? - PullRequest
0 голосов
/ 09 марта 2012

Пример У меня есть несколько идентификаторов в контроллере приложения:

@clicked = %w(32, 18, 13)

А в контроллере у меня есть:

@konkurrencer = Konkurrencer.find(:all, :order => 'created_at DESC').paginate(:page => params[:page], :per_page => 5)

Как удалить Konkurrencer с IDS 32, 18а 13 из @конкуррентр?

И как реализовать атрибут clicked (логический) для konkurrencer.Например, тогда можно было бы сделать в цикле <% if kon.clicked %>CLICKED<% end %>, это было бы верно, если бы у кон был идентификатор в @clicked

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

Вы можете использовать NOT IN, я тестировал без paginate, попробуйте и дайте мне сейчас, если он работает:

@konkurrencer = Konkurrencer.where("id NOT IN(?)", @clicked).order("created_at DESC").paginate(:page => params[:page], :per_page => 5)

Убедитесь, что переменная @clicked является массивом, так как moo слишкомкороткая подсказка.

0 голосов
/ 09 марта 2012

Как уже упоминалось, вы можете использовать delete_if, но если у вас есть несколько идентификаторов, логика условия может стать длинной.Как альтернативное, но несколько дорогое решение, вы можете просто «вычесть» целевые элементы, создав другую коллекцию:

 @konkurrencer = Konkurrencer.find(:all, :order => 'created_at DESC') - Konkurrencer.find(32,18,13)
0 голосов
/ 09 марта 2012

Вы можете использовать delete_if

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...