web-dev-qa-db-fra.com

Comment combiner deux conditions dans une clause where?

J'ai ce qui suit:

time_range = (1.month.ago.beginning_of_month..1.month.ago.end_of_month)

Comment.where(:created_at => time_range).count

Comment puis-je ajouter à la clause where avec une déclaration comme:

.where("user_id is not in (?)",[user_ids]).

Comment puis-je combiner les deux? Merci

30
AnApprentice

si vous voulez une requête conditionnelle "AND", essayez ceci:

Comment.
  where(:created_at => time_range).
  where("user_id is not in (?)",[user_ids])

qui produira du SQL comme: select ... where ... AND ...

si vous voulez que la clause WEHRE soit plus compliquée, comme: where ( a AND b) OR (c AND d), vous devez combiner les conditions dans la clause vous-même, par exemple.

Comment.where("(a AND b ) OR (c AND d)")
66
User.where(["name = ? and email = ?", "Joe", "[email protected]"])

Ce sera bien.

17
Sujith Sudersan
User.where(name: 'Joe', email: '[email protected]')
13
shiva kumar