Rails .reject将类型ActiveRecord :: Relation转换为类型数组

时间:2014-02-26 01:04:19

标签: ruby-on-rails activerecord

我想在Rails中使用.reject方法从搜索中删除current_user。我这样做如下:

@users = User.where{(firstname =~ my{"%#{params[:term]}%"}) | (lastname =~ my{"%#{params[:term]}%"}) | (email =~ my{"%#{params[:term]}%"})}.select("id,firstname, lastname")
@users = @users.reject{|u| User.find(u.id) == current_user}

在第一行之后,如果我拨打@users.class,我会收到ActiveRecord::Relation,但在使用.reject方法后,如果我拨打@users.class,我会Array }。

使用ActiveRecord::Relation方法后如何维护.reject?我需要一个ActiveRecord::Relation才能在我的下一行中使用.paginate方法,即:

@user = @users.paginate(:page => params[:page], :per_page => params[:page_limit])

1 个答案:

答案 0 :(得分:12)

您应始终使用ActiveRecord api query methods来获取ActiveRecord::Relationreject不是)。例如,合并where

@users = User.where(your_first_conditions).
              where("id != :id", id: current_user.id).
              select([:id, :firstname, :lastname])