申请'或'到一个内部加入where子句ActiveRecord

时间:2015-05-20 11:55:38

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2 rails-activerecord

型号:

class QueueList < ActiveRecord::Base
  has_many :times

  self.today
    joins(:times).where(times: { period_type: 'on', date: Date.today} || times: { period_type: 'from', date: Date.today }) 
  end
end

上面的模型包含一个时间列表。因为:时间可以是两个不同的period_types,我必须应用&#34; OR&#34;这个查询。有没有办法在不使用字符串查询的情况下完成上述错误代码,因为我试图在ActiveRecord中进行?

1 个答案:

答案 0 :(得分:2)

您可以使用Arel执行OR查询或ActiverecordAnyOf gem。

但是,在您的情况下,您可以使用包含(IN语句)。例如:

.where(period_type: %w(on from), date: Date.today)