1
当hidden_episodes_ids为空时,此查询不会返回任何记录。Rails 3查询 - IN(?)可以为空
:conditions => ["episodes.show_id in (?) AND air_date >= ? AND air_date <= ? AND episodes.id NOT IN (?)", @show_ids, @start_day, @end_day, hidden_episodes_ids]
如果它是空的,SQL会像NOT IN (null)
所以我的解决办法是:
if hidden_episodes_ids.any?
*mode code*:conditions => ["episodes.show_id in (?) AND air_date >= ? AND air_date <= ? AND episodes.id NOT IN (?)", @show_ids, @start_day, @end_day, hidden_episodes_ids]
else
*mode code*:conditions => ["episodes.show_id in (?) AND air_date >= ? AND air_date <= ?", @show_ids, @start_day, @end_day]
end
但比较难看(我真正的查询实际上是5线,连接和选择等..)
有没有办法使用单个查询,并避免NOT IN (null)
?
PS:这是迁移到Rails 3岁的查询,因此:conditions
伟大的:D我必须开始浏览我所有的控制器和模型,并重写所有查询:) – Frexuz