<activerecord :: querymethods :: wherechain error =“” on =“” a =“” scope =“” that =“” was =“” working =“”

时间:2019-01-09 19:26:21

标签: ruby-on-rails

= “”

我已经运行了一段成功的代码,但是它刚刚开始引发错误-我们已经更改了数据进入数据库的方式,但相信它更有可能是一种编程问题,或者我错误地更改了它,但看不到哪里。

问题似乎是由示波器引起的,我们正在运行Rails 4.2.2

完整错误是

undefined method `call' for 
 ActiveRecord::QueryMethods::WhereChain:0x007feb8f5c49f0> Did you mean? caller

app/controllers/orders_controller.rb:158:in `weekly_sales_report'

在我的orders_controller第158行中

@sales_this_week_bysales = Order.select("COUNT(order_id) AS nosales, AVG(net_amount) AS avgsale,SUM(sale_cost) AS sale_cost, SUM(net_amount) AS weeklysalestotal, owner_id AS salesman").sales.where.(date_of_sale: (@startdate .. @enddate)).with_salesman.group(:owner_id)

在我的orders.rb模型中,我具有以下已使用的作用域

scope :with_salesman, -> { joins(:pipe_records).where(pipe_records: {pipe_part_id: 1}).where.not(pipe_records: {owner_id: nil}) }

scope :sales, -> {where ("orders.order_ref <>'' and date_of_sale IS NOT NULL ")}

我将范围重新编写为以下内容,但仍然出现相同的错误

scope :with_salesman, -> { joins(" INNER JOIN pipe_records ON pipe_records.order_id = orders.id WHERE pipe_records.pipe_part_id =1 AND pipe_records.owner_id <>'' ") }

我还从销售中删除了WHERE开始日期条件。在158上,它返回了一个不同的错误,但似乎范围不再正确传递,或者由于记录不正确而返回了错误?

我现在不确定发生了什么,我回到遥控器上并从几天前开始获取了一份代码副本,这也引发了相同的错误,但是它可以正常工作。最近,我们通过一种新形式放了很多新记录,这种新形式绕过和修改了可能归咎于日期的更改。我将不胜感激任何建议或新鲜的眼睛。

2 个答案:

答案 0 :(得分:2)

只需删除def some_dropdown(id, text) dropdown = find(id).click dropdown.first('option', text: text).select_option end def select_form within 'content#id' do some_dropdown('#id', text) click_link_or_button 'Submit' end end 和括号之间的句点。

where

where.(date_of_sale: (@startdate .. @enddate))

ruby

receiver.() 的简写,因此您收到的错误

答案 1 :(得分:0)

您可能要删除where之后的句点:

where.(date_of_sale: (@startdate .. @enddate))