如何在where子句中组合两个条件?

AnA*_*ice 33 activerecord ruby-on-rails ruby-on-rails-3

我有以下内容:

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

Comment.where(:created_at => time_range).count
Run Code Online (Sandbox Code Playgroud)

如何使用如下语句添加到where子句:

.where("user_id is not in (?)",[user_ids]).
Run Code Online (Sandbox Code Playgroud)

我该如何将两者结合起来?谢谢

Siw*_*申思维 68

如果你想要"AND"条件查询,试试这个:

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

这将产生如下SQL: select ... where ... AND ...

如果您希望WEHRE子句更复杂,例如: where ( a AND b) OR (c AND d),您必须自己将条件组合到子句中,例如:

Comment.where("(a AND b ) OR (c AND d)")
Run Code Online (Sandbox Code Playgroud)


小智 18

User.where(["name = ? and email = ?", "Joe", "joe@example.com"])
Run Code Online (Sandbox Code Playgroud)

这没关系.


shi*_*mar 15

User.where(name: 'Joe', email: 'joe@example.com')
Run Code Online (Sandbox Code Playgroud)