MKK*_*MKK 4 ruby-on-rails devise ruby-on-rails-3
我现在正在抓住所有用户.
但是,我想排除未确认的用户.
他们的confirmed_at属性是零.
我怎么能够?
@search = User.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 10
end
@users = @search.results
Run Code Online (Sandbox Code Playgroud)
首先在您的用户模型中添加一个范围:
scope :confirmed, where("confirmed_at IS NOT NULL")
Run Code Online (Sandbox Code Playgroud)
然后你只需要在搜索之前添加范围
@search = User.confirmed.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 10
end
Run Code Online (Sandbox Code Playgroud)
编辑:
实际上,经过测试,上述解决方案似乎不起作用.范围似乎被忽略了.还有另一个解决方案:
在您的User模型中,您可能有这样的方法:
searchable do
text :lastname, :firstname
...
end
Run Code Online (Sandbox Code Playgroud)
您必须添加条件searchable:
searchable if: proc { |user| user.confirmed? } do
text :lastname, :firstname
...
end
Run Code Online (Sandbox Code Playgroud)
编辑2:
如果有时您想要确认用户,有时甚至是所有用户,还有另一种方法,但您也需要修改模型.
在你的User模型中:
searchable do
text :lastname, :firstname
boolean :confirmed do
confirmed_at != nil
end
...
end
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中
@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
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |