示例我的应用程序控制器中有一些ID:
@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的Konkurrencer?
如何实现konkurrencer的clicked属性(boolean)。例如,如果kon在<% if kon.clicked %>CLICKED<% end %>
@clicked
这是真的。
答案 0 :(得分:2)
您可以使用NOT IN,我已经在没有分页部分的情况下进行了测试,如果有效的话,请尝试让我现在:
@konkurrencer = Konkurrencer.where("id NOT IN(?)", @clicked).order("created_at DESC").paginate(:page => params[:page], :per_page => 5)
确保@clicked
变量是一个数组,因为moo太短了。
答案 1 :(得分:0)
您可以使用delete_if
答案 2 :(得分:0)
正如ghr所提到的,你可以使用delete_if但是如果你有一堆id,条件逻辑可能会变长。作为替代方案,但有些昂贵的解决方案,您可以通过构建另一个集合来“减去”目标项目:
@konkurrencer = Konkurrencer.find(:all, :order => 'created_at DESC') - Konkurrencer.find(32,18,13)