ActiveRecord未定义的方法OR

时间:2015-07-20 19:18:02

标签: ruby-on-rails activerecord

这可以在没有.or()的情况下工作,但在我添加它时会中断:

<% @expired = Report.where('EXPIRED < ?', Date.new(2014,12,31)).or(Report.where(EXPIRED: nil)).where(:MAJOR => 1).where.not(:TRIBE => 1).where(:PERMIT_TYPE => 'GENERAL') %>

并且给了我这个错误:

undefined method `or' for #<Report::ActiveRecord_Relation:0x953e020>

另外,这样做会给我一个语法错误:

Report.where('EXPIRED < ?', Date.new(2014,12,31) OR (EXPIRED: nil))

如何让这个OR工作?

Rails 4.2.1

1 个答案:

答案 0 :(得分:0)

试试这个

Report.where("EXPIRED is null or EXPIRED < ?", Date.new(2014,12,31))

并且对于更大的查询,请执行此操作

Report.where("EXPIRED is null or EXPIRED < ?", Date.new(2014,12,31)).where(MAJOR: 1, PERMIT_TYPE: "GENERAL" ).where.not(TRIBE: 1)