SyntaxError:意外的')',期望输入结束

时间:2018-06-21 16:32:50

标签: ruby-on-rails ruby

这似乎是您在编码的初期会收到的一个错误,对于我一生来说,我无法弄清楚为什么会收到此错误。

我的代码如下:

Order.joins(:all_adjustments).where(all_adjustments.last: { source_type: "Spree::PromotionAction" } )

请帮忙!我有种感觉,我在想念一些显而易见的东西……我只是无法分辨它到底是什么!

错误:

SyntaxError: unexpected ')', expecting end-of-input: "Spree::PromotionAction" } )

预先感谢

2 个答案:

答案 0 :(得分:4)

这归因于where(all_justments.last:,这是无效的语法。

where的参数必须是一个哈希,而您所拥有的不是有效的哈希。如果要在哈希中使用{key: value}语法,则key必须是一个符号,并且您尝试在其中放置一个表达式。

尝试

Order.joins(:all_adjustments).where(all_adjustments: { source_type: "Spree::PromotionAction" } )

根据您建立关系的方式,这可能不起作用,但它应该使您更接近真实的错误。

答案 1 :(得分:1)

在关系has_many :all_adjustments, class_name: 'Spree::Adjustment'中,all_adjustments只是一个自定义名称,用于定义订单及其调整之间的关系(这就是为什么要指定class_name的原因)

对于查询,您需要加入关联名称(因此all_adjustmentssource
通过此联接的结果,您可以创建一个条件,该条件使用联接中的任何。(source)。在您的情况下,表名称为spree_adjustments

因此您的查询应以这种方式工作:

Spree::Order.joins(:all_adjustments).where(spree_adjustments: { source_type: "Spree::PromotionAction" } )