现在,我正在获取所有用户。
但是,我想排除未确认的用户。
它们的confirmed_at
属性为nil。
我怎样才能?
@search = User.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 10
end
@users = @search.results
最佳答案
首先将范围添加到您的用户模型:
scope :confirmed, where("confirmed_at IS NOT NULL")
然后,您只需在搜索之前添加范围
@search = User.confirmed.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 10
end
编辑:
确实,经过测试,以上解决方案似乎无效。范围似乎被忽略了。还有另一种解决方案:
在您的
User
模型中,您可能具有如下方法:searchable do
text :lastname, :firstname
...
end
您必须向
searchable
添加条件:searchable if: proc { |user| user.confirmed? } do
text :lastname, :firstname
...
end
编辑2:
如果有时您想要确认的用户,有时又是所有用户,则还有另一种方法,但是您也需要修改模型。
在您的
User
模型中:searchable do
text :lastname, :firstname
boolean :confirmed do
confirmed_at != nil
end
...
end
然后在您的控制器中
@search = User.search do
fulltext params[:search]
with(:confirmed, true) # true if you want confirmed users, false for unconfirmed and if you want all users you don't write this line
paginate :page => params[:page], :per_page => 10
end
我希望这个帮助