Ruby on rails 获取接收查询Rails的错误

Ruby on rails 获取接收查询Rails的错误,ruby-on-rails,mongoid,take,Ruby On Rails,Mongoid,Take,我有一个方法如下 def self.get(code) where(code: normalize_code(code)). where('coupon_count > 0'). where('expires_at > Time.now OR expires_at IS NULL'). take end 在take行上,我一直得到错误的参数0的错误数目。我使用的是rails 4.0.1,这是造成问题的原因还是我遗漏了什么 编辑并查看4.0.1的文档 我将方法更新为 def

我有一个方法如下

def self.get(code)
 where(code: normalize_code(code)).
 where('coupon_count > 0').
 where('expires_at > Time.now OR expires_at IS NULL').
 take
end
在take行上,我一直得到错误的参数0的错误数目。我使用的是rails 4.0.1,这是造成问题的原因还是我遗漏了什么

编辑并查看4.0.1的文档

我将方法更新为

def self.get(code)
 where(code: normalize_code(code)).
 where('coupon_count > 0').
 where('expires_at > Time.now OR expires_at IS NULL').
 take(1)
end
现在我得到了错误

SyntaxError: Unexpected identifier (16722)
这个错误在接收线上

-更新-

我的错误是优惠券计数的where方法。它不在take方法中。在接受优惠券之前,我必须弄清楚它不会检查优惠券计数字段的原因。

文档似乎说,使用默认值将返回限制为1

Person.take返回SELECT*从people LIMIT 1 I获取的对象


然而,错误消息告诉我take需要一个参数。查看下面这个问题答案的注释,它基本上总结了在Ruby 1.8.7、1.9.3、2.0.0或2.1.0中,如果没有参数,Take不能被调用。

因为您只需要一个,为什么不先尝试使用呢。

你能给出确切的堆栈跟踪吗?我使用的是rails 4.0.1我去了文档,更新了我的问题Ruby的版本是什么?Ruby 2.2.1p85 2015-02-26修订版49769[x86_64-darwin14]我看了看,它确实需要一个参数。我试过了,得到了同样的答案或错误,我应该这么说,意外标识符通常意味着存在语法问题,或者您给了它一个来自该方法不在其中的类的变量。出于好奇,主要是因为我从来没有用点来结束Rails查询,这些查询应该做什么?它们将1个查询的方法链接在一起,所以可能我的语法错了。我想让它说检查“优惠券代码”字段,如果它大于或等于1,则得到1