Rails 在 RailsGuides 里有个 Active Record Query Interface 的一个问题

zhaopei · 2015年10月06日 · 最后由 liukai 回复于 2015年10月08日 · 2416 次阅读

页面里有个这样的写法

Client.where("orders_count = ?", params[:orders])

我在调用时却显示

ArgumentError: wrong number of arguments (2 for 1)
    from /usr/local/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/criteria.rb:449:in `where'
    from (eval):2:in `where'
    from (irb):23

什么原因?,怎么用代?的传递参数,

你用的是 mongodb 吧,AR 还能用么?

#1 楼 @chenge

@statistics = Statistic.where(:retailDate => "#{params[:retailDate]}")  

这种写法可以呀, 这个应该是不区分数据库的呀,

#2 楼 @zhaopei 你把 model 代码贴出来吧。 这个写法可以,不等于那个写法可以吧。错误很清楚说参数个数不对。

#3 楼 @chenge 下面是 model 代码:

class Statistic
  include Mongoid::Document
  field :qrcode, type: String
  field :purchasePrice, type: Float
  field :retailPrice, type: Float
  field :quantity, type: Integer
  field :retailDate, type: String
end

#4 楼 @zhaopei Mongoid 不支持这样写,"orders_count = ?" 是个 SQL 语句。

#5 楼 @rei 哦,那 mongoid 的应该怎么写?

where(:orders_count => params[:orders].to_i)

Client.where(["orders_count = ?", params[:orders]])

需要 登录 后方可回复, 如果你还没有账号请 注册新账号