これですべてのユーザーを取得しています。
ただし、未確認のユーザーは除外したいと思います。
それらのconfirmed_at
属性はnilです。
どうやって?
@search = User.search do
fulltext params[:search]
paginate :page => params[:page], :per_page => 10
end
@users = @search.results
これですべてのユーザーを取得しています。
ただし、未確認のユーザーは除外したいと思います。
それらの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
この助けを願っています
私は使用しますUser.where.not(confirmed_at: nil)
。モデルにスコープを作成して、簡単にすることができます。
class User < ApplicationRecord
scope :confirmed, -> { where.not(confirmed_at: nil) }
end
そして、あなたは使用することができますUser.confirmed