Ruby on rails Rails 3查询-IN(?)可以为空
当隐藏的\u ID为空时,此查询不会返回任何记录Ruby on rails Rails 3查询-IN(?)可以为空,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,当隐藏的\u ID为空时,此查询不会返回任何记录 :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] 但它相当难看(我真正的查询实际上是5行,带有连接和选择等) 是否有一种方法可以使用单个查询并避免不在(null
: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]
但它相当难看(我真正的查询实际上是5行,带有连接和选择等)
是否有一种方法可以使用单个查询并避免不在(null)
PS:这些是迁移到Rails 3中的旧查询,因此
:conditions
您应该使用where
方法,因为这将有助于清理所有这些问题。您只需将其链接在一起:
scope = Thing.where(:episodes => { :show_id => @show_ids })
scope = scope.where('air_date BETWEEN ? AND ?', @start_day, @end_day)
if (hidden_episode_ids.any?)
scope = scope.where('episodes.id NOT IN (?)', hidden_episode_ids)
end
能够有条件地修改作用域可以避免大量重复。您应该使用
where
方法,因为这将有助于清理所有这些内容。您只需将其链接在一起:
scope = Thing.where(:episodes => { :show_id => @show_ids })
scope = scope.where('air_date BETWEEN ? AND ?', @start_day, @end_day)
if (hidden_episode_ids.any?)
scope = scope.where('episodes.id NOT IN (?)', hidden_episode_ids)
end
能够有条件地修改作用域可以避免大量重复。Great:D我必须开始检查所有控制器和模型并重写所有查询:)Great:D我必须开始检查所有控制器和模型并重写所有查询:)