1
をcontaingたレコードを検索します。私はチェーンに条件を指定する方法を見つけようとしています - 特定のタグが割り当てられているユーザーのフィルタリング(このタグのIDは不明です。ちょうどkey
が知られています)。私は、次のDBスキーマを持っている特定のタグ
だから、ここに私のコードがどのように見えるか、多かれ少なかれです:
col = User.all
col = col.where('cats_count <= 0') if args[:no_cat]
col = col.where('dogs_count <= 0') if args[:no_dog]
col = col.where('other_pets_count <= 0') if args[:no_other_pet]
# ... tag logic filtering here ...
col = col.where('age > 100') if args[:old]
と私は割り当てられkey=non_smoking
とTag
を持っているユーザーのためにフィルタリングします。理想的には、私はそれが重要であれば、データベースエンジンindependentenであることが大好きです。私はsqlite/postgresを使っています。
正直なところ私はそれをどう対処するかについて全く考えていません。おそらく、SQLの問題やRails/ActiveRecordの知識が不足している可能性があります。
ところで、それぞれの 'col.where'の間に何か必要はありませんか? 'OR' /' AND'のように?それはSQL-meを悩ましています... – Blag
デフォルトでは 'where 'は' AND 'を使用してチェーンされていますが、必要に応じて' OR 'にすることもできます([ActiveRecord OR query](https:// stackoverflowを参照)。 com/questions/3639656/activerecord-or-query)) –