0

find_all_by; を使用しなければならない場合があります。サイズが制限されている Cookie セッション ハッシュ (4kb) があるため、必要なレコードを格納する代わりに、ID だけを配列に格納しています。したがって、find_all_by を使用すると、これらのレコードをモデル/クラスで直接見つけることができます。例えば、

@data = Data.find_all_by_id(session[:search_results])

ただし、現在表示されている検索結果をこのリストから削除する必要があります。

通常、私は

find (:all, conditions: ["id != ?", current_user.id])

しかし、find_all_by は ActiveRecord クエリを配列として返し、そのような条件をサポートしていないように見えるため、最善のアプローチについて少し混乱しています。

さらに、@current_user が AR オブジェクトである Array difference() (例: @data - @current_user) は実行できません。これは、Array と AR オブジェクトの違いを計算できないためです (おそらく AR を変換できますか?)オブジェクトを配列に渡して、このルートに行きますか?)

Class.find_by_all 呼び出しから受け取った配列から単一のレコードを減算するにはどうすればよいですか?

4

2 に答える 2

0

これを試して:

@data = Data.where("id in (?) AND id != ?", session[:search_results], current_user.id)
于 2013-05-23T16:10:01.487 に答える