3

いくつかのレコードを取得しようとしていますが、パラメーターの 1 つが空の配列である場合に問題が発生します。クエリが結果を返さない理由は理解していますが、Rails 内でそれを処理する最善の方法がわかりません。私のコードでは、私は呼び出しています

@user.trustees.where(["trustees.default = true AND trustees.id NOT IN (?)", trustees.map{ |t| t.id }])

これは、trustees 配列に実際にオブジェクトが含まれている場合は期待どおりに機能しますが、含まれていない場合、クエリは何も返しません。

SELECT `users`.* 
FROM `users` 
INNER JOIN `trustees` ON `users`.`id` = `trustees`.`trustee_id` 
WHERE `trustees`.`truster_id` = 1 
AND (trustees.default = true 
AND trustees.id NOT IN (NULL))

NOT IN (NULL)私が抱えている問題を回避する最も簡単な方法は何ですか?

4

2 に答える 2

6

次のようにできます。

@user.trustees.where(default: true).where.not(id: trustees.map{ |t| t.id })
于 2013-08-11T22:41:57.717 に答える